From c71e80f1925a944cfc9fcd773c2f7b9d4590289d Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Fri, 11 Jul 2014 10:52:27 -0400 Subject: [PATCH] Improved the structure type output of zwinconstgen.go. --- redo/zwinconstgen.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/redo/zwinconstgen.go b/redo/zwinconstgen.go index 9b2511d..01b0094 100644 --- a/redo/zwinconstgen.go +++ b/redo/zwinconstgen.go @@ -108,6 +108,15 @@ import ( // #include {{range .Consts}}// uintptr_t {{.}} = (uintptr_t) ({{noprefix .}}); {{end}}import "C" +func winName(t reflect.Type) string { + switch t.Kind() { + case reflect.UnsafePointer: + return "uintptr" + case reflect.Ptr: + return "*" + winName(t.Elem()) + } + return t.Kind().String() +} func main() { buf := new(bytes.Buffer) fmt.Fprintln(buf, "package ui") @@ -117,7 +126,7 @@ func main() { {{range .Structs}} t = reflect.TypeOf(C.{{noprefix .}}{}) fmt.Fprintf(buf, "type %s struct {\n", {{printf "%q" .}}) for i := 0; i < t.NumField(); i++ { - fmt.Fprintf(buf, "\t%s %s\n", t.Field(i).Name, t.Field(i).Type.Kind()) + fmt.Fprintf(buf, "\t%s %s\n", t.Field(i).Name, winName(t.Field(i).Type)) } fmt.Fprintf(buf, "}") {{end}}