diff --git a/cmd/genbindings/clang2il.go b/cmd/genbindings/clang2il.go index 341bd19b..8041faaf 100644 --- a/cmd/genbindings/clang2il.go +++ b/cmd/genbindings/clang2il.go @@ -51,8 +51,8 @@ func parseHeader(topLevel []interface{}) (*CppParsedHeader, error) { } } - // Also skip over any QFooPrivate classes - if nodename[0] == 'Q' && strings.HasSuffix(nodename, "Private") { + // Also skip over any custom exceptions + if !AllowClass(nodename) { continue } diff --git a/cmd/genbindings/exceptions.go b/cmd/genbindings/exceptions.go index e9df2665..89a5752a 100644 --- a/cmd/genbindings/exceptions.go +++ b/cmd/genbindings/exceptions.go @@ -38,6 +38,27 @@ func ImportHeaderForClass(className string) bool { return true } +func AllowClass(className string) bool { + if className[0] != 'Q' { + return false + } + + if strings.HasSuffix(className, "Private") { + return false + } + + switch className { + case + "QException", // Extends std::exception, too hard + "QItemSelection", // Extends a QList<>, too hard + "QXmlStreamAttributes", // Extends a QList<>, too hard + "QPolygon", "QPolygonF": // Extends a QVector template class, too hard + return false + } + + return true +} + func CheckComplexity(p CppParameter) error { if p.QMapOf() { diff --git a/cmd/genbindings/main.go b/cmd/genbindings/main.go index e4695b82..28f883e9 100644 --- a/cmd/genbindings/main.go +++ b/cmd/genbindings/main.go @@ -175,7 +175,6 @@ func main() { } // AST transforms on our IL - astTransformBlacklist(parsed) astTransformOptional(parsed) astTransformOverloads(parsed) diff --git a/cmd/genbindings/transformblacklist.go b/cmd/genbindings/transformblacklist.go deleted file mode 100644 index 254c2021..00000000 --- a/cmd/genbindings/transformblacklist.go +++ /dev/null @@ -1,16 +0,0 @@ -package main - -// astTransformBlacklist filters out things we do not want to parse. -func astTransformBlacklist(parsed *CppParsedHeader) { - var keep []CppClass - - for _, c := range parsed.Classes { - if c.ClassName[0] != 'Q' { - continue - } - - keep = append(keep, c) - } - - parsed.Classes = keep -}