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  }