From 64e46e1978acf25182fcd2409678a5ff9944331f Mon Sep 17 00:00:00 2001 From: mappu Date: Tue, 27 Aug 2024 18:44:44 +1200 Subject: [PATCH] genbindings: move QFlag<> handling into normal emitgo/emitcabi emission --- cmd/genbindings/clang2il.go | 4 ---- cmd/genbindings/emitcabi.go | 5 ++++- cmd/genbindings/emitgo.go | 5 ++++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/cmd/genbindings/clang2il.go b/cmd/genbindings/clang2il.go index 0f0b497b..0b918636 100644 --- a/cmd/genbindings/clang2il.go +++ b/cmd/genbindings/clang2il.go @@ -626,10 +626,6 @@ func tokenizeMultipleParameters(p string) []string { func parseSingleTypeString(p string) CppParameter { - if strings.HasPrefix(p, "QFlag<") { - return CppParameter{ParameterType: "int"} - } - if strings.Contains(p, "(*)") { return CppParameter{ParameterType: "uintptr"} // Function pointer, nonrepresentible } diff --git a/cmd/genbindings/emitcabi.go b/cmd/genbindings/emitcabi.go index b4c90196..a6e042bd 100644 --- a/cmd/genbindings/emitcabi.go +++ b/cmd/genbindings/emitcabi.go @@ -45,7 +45,10 @@ func (p CppParameter) RenderTypeCabi() string { ret = "ptrdiff_t" } - if strings.Contains(p.ParameterType, `::`) { + if strings.HasPrefix(p.ParameterType, `QFlags<`) { + ret = "int" + + } else if strings.Contains(p.ParameterType, `::`) { if _, ok := KnownClassnames[p.ParameterType]; ok { // Inner class ret = cabiClassName(p.ParameterType) diff --git a/cmd/genbindings/emitgo.go b/cmd/genbindings/emitgo.go index 76b3cb6b..adcb4e43 100644 --- a/cmd/genbindings/emitgo.go +++ b/cmd/genbindings/emitgo.go @@ -81,7 +81,10 @@ func (p CppParameter) RenderTypeGo() string { ret += "uintptr" default: - if strings.Contains(p.ParameterType, `::`) { + if strings.HasPrefix(p.ParameterType, `QFlags<`) { + ret += "int" + + } else if strings.Contains(p.ParameterType, `::`) { if _, ok := KnownClassnames[p.ParameterType]; ok { // Inner class ret += cabiClassName(p.ParameterType)