code.witches.io/go/sdl2@v0.1.1/version.go (about) 1 package sdl 2 3 import "C" 4 5 // #include <SDL2/SDL_version.h> 6 import "C" 7 import ( 8 "fmt" 9 "unsafe" 10 ) 11 12 type Version struct { 13 Major uint8 14 Minor uint8 15 Patch uint8 16 } 17 18 func (v Version) String() string { 19 return fmt.Sprintf("%d.%d.%d", v.Major, v.Minor, v.Patch) 20 } 21 22 func GetVersion() Version { 23 var v Version 24 C.SDL_GetVersion((*C.struct_SDL_version)(unsafe.Pointer(&v))) 25 return v 26 } 27 28 func GetRevision() string { 29 nativeRevision := C.SDL_GetRevision() 30 return C.GoString(nativeRevision) 31 } 32 33 func VersionAtLeast(major, minor, patch uint8) bool { 34 v := GetVersion() 35 return VersionNum(v.Major, v.Minor, v.Patch) >= VersionNum(major, minor, patch) 36 } 37 38 func VersionNum(major, minor, patch uint8) int { 39 return int(major)*1000 + int(minor)*100 + int(patch) 40 }