summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--redo/zwinconstgen.go11
1 files changed, 10 insertions, 1 deletions
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 <stdint.h>
{{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}}