From ccbfaf08192e2b26f2cd9cd82f18a46b616fb85c Mon Sep 17 00:00:00 2001
From: mappu <mappu04@gmail.com>
Date: Sun, 13 Apr 2025 19:44:40 +1200
Subject: [PATCH] genbindings/libraries: add OnlyHeaders/ExceptHeaders helpers

---
 cmd/genbindings/config-libraries.go | 24 ++++++++++++------------
 cmd/genbindings/util.go             | 11 ++++++++++-
 2 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/cmd/genbindings/config-libraries.go b/cmd/genbindings/config-libraries.go
index fc26d94f..46d2fea1 100644
--- a/cmd/genbindings/config-libraries.go
+++ b/cmd/genbindings/config-libraries.go
@@ -8,6 +8,16 @@ import (
 func ProcessLibraries(clangBin, outDir, extraLibsDir string) {
 
 	AllowAllHeaders := func(string) bool { return true }
+	OnlyHeaders := func(s ...string) func(fullpath string) bool {
+		return func(fullpath string) bool {
+			return slice_contains(s, filepath.Base(fullpath))
+		}
+	}
+	ExceptHeaders := func(s ...string) func(fullpath string) bool {
+		return func(fullpath string) bool {
+			return !slice_contains(s, filepath.Base(fullpath))
+		}
+	}
 
 	flushKnownTypes()
 	InsertTypedefs(false)
@@ -150,14 +160,7 @@ func ProcessLibraries(clangBin, outDir, extraLibsDir string) {
 			"/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore",
 			"/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets",
 		},
-
-		func(fullpath string) bool {
-			baseName := filepath.Base(fullpath)
-			if baseName == "qquickwebengineprofile.h" || baseName == "qquickwebenginescript.h" {
-				return false
-			}
-			return true
-		},
+		ExceptHeaders("qquickwebengineprofile.h", "qquickwebenginescript.h"),
 		clangBin,
 		pkgConfigCflags("Qt5WebEngineWidgets"),
 		outDir,
@@ -280,10 +283,7 @@ func ProcessLibraries(clangBin, outDir, extraLibsDir string) {
 		[]string{
 			"/usr/include/x86_64-linux-gnu/qt6/QtNetwork",
 		},
-		func(fullpath string) bool {
-			fname := filepath.Base(fullpath)
-			return fname != "qtnetwork-config.h"
-		},
+		ExceptHeaders("qtnetwork-config.h"),
 		clangBin,
 		"--std=c++17 "+pkgConfigCflags("Qt6Network"),
 		outDir,
diff --git a/cmd/genbindings/util.go b/cmd/genbindings/util.go
index 41735380..07e1b072 100644
--- a/cmd/genbindings/util.go
+++ b/cmd/genbindings/util.go
@@ -53,4 +53,13 @@ func slice_copy[T comparable](input []T) []T {
 		ret[i] = elem
 	}
 	return ret
-}
\ No newline at end of file
+}
+
+func slice_contains[T comparable](input []T, search T) bool {
+	for _, elem := range input {
+		if elem == search {
+			return true
+		}
+	}
+	return false // not found
+}