func init() { C.g_type_init() TYPE_GTYPE = Type(C.g_gtype_get_type()) int_bytes := strconv.IntSize / 8 if int_bytes == int(C._GINT_SIZE) { TYPE_GO_INT = TYPE_INT TYPE_GO_UINT = TYPE_UINT } else if int_bytes == C._GLONG_SIZE { TYPE_GO_INT = TYPE_LONG TYPE_GO_UINT = TYPE_ULONG } else if int_bytes == 64 { TYPE_GO_INT = TYPE_INT64 TYPE_GO_UINT = TYPE_UINT64 } else { panic("Unexpectd size of 'int'") } int32_bytes := C.uint(4) if int32_bytes == C._GINT_SIZE { TYPE_GO_INT32 = TYPE_INT TYPE_GO_UINT32 = TYPE_UINT } else if int32_bytes == C._GLONG_SIZE { TYPE_GO_INT32 = TYPE_LONG TYPE_GO_UINT32 = TYPE_ULONG } else { panic("Neither gint nor glong are 32 bit numbers") } }
func main() { if len(os.Args) < 2 { fmt.Println("usage: go-gi <namespace>") return } C.g_type_init() namespace := os.Args[1] typelib, err := LoadNamespace(namespace) if err != nil { fmt.Println(err.Error()) return } defer FreeTypelib(typelib) var code bytes.Buffer tmpl, err := template.ParseGlob("templates/*") if err != nil { fmt.Println(err.Error()) return } n := GetNumInfos(namespace) for i := 0; i < n; i++ { info := GetInfo(namespace, i) switch info.Type { case Enum: ProcessEnum(info, &code, tmpl) case Object: ProcessObject(info, &code, tmpl) } info.Free() } code.WriteTo(os.Stdout) }
func init() { C.g_type_init() }
func Init() { C.g_type_init() }
func init() { C.g_type_init() TYPE_GTYPE = Type(C.g_gtype_get_type()) }
func init() { C.g_type_init() gtypes = make(map[GType]FuncToGo) ctypes = make(map[GType]FuncToC) }