-
-
Notifications
You must be signed in to change notification settings - Fork 219
/
guid.go
49 lines (41 loc) · 1.06 KB
/
guid.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package sdl
/*
#include "sdl_wrapper.h"
#if !SDL_VERSION_ATLEAST(2,24,0)
#if defined(WARN_OUTDATED)
#pragma message("SDL_GUIDToString is not supported before SDL 2.24.0")
#pragma message("SDL_GUIDFromString is not supported before SDL 2.24.0")
#endif
typedef struct {
Uint8 data[16];
} SDL_GUID;
static inline void SDL_GUIDToString(SDL_GUID guid, char *pszGUID, int cbGUID)
{
return;
}
static inline SDL_GUID SDL_GUIDFromString(const char *pchGUID)
{
SDL_GUID guid;
return guid;
}
#endif
*/
import "C"
import (
"unsafe"
)
type GUID C.SDL_GUID
// ToString returns an ASCII string representation for a given GUID.
func (guid GUID) ToString() (ascii string) {
_cap := C.size_t(33)
_buf := (*C.char)(C.SDL_malloc(_cap))
defer C.SDL_free(unsafe.Pointer(_buf))
C.SDL_GUIDToString(C.SDL_GUID(guid), _buf, C.int(_cap))
return C.GoString(_buf)
}
// GUIDFromString converts a GUID string into a GUID structure.
func GUIDFromString(ascii string) (guid GUID) {
_ascii := C.CString(ascii)
defer C.free(unsafe.Pointer(_ascii))
return GUID(C.SDL_GUIDFromString(_ascii))
}