Exemple #1
0
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")
	}
}
Exemple #2
0
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)
}
Exemple #3
0
func init() {
	C.g_type_init()
}
Exemple #4
0
func Init() {
	C.g_type_init()
}
Exemple #5
0
func init() {
	C.g_type_init()
	TYPE_GTYPE = Type(C.g_gtype_get_type())
}
Exemple #6
0
func init() {
	C.g_type_init()
	gtypes = make(map[GType]FuncToGo)
	ctypes = make(map[GType]FuncToC)
}