clang2il.go: Populate private signals

This commit is contained in:
Rick Calixte 2025-05-23 21:59:49 -04:00
parent 82826d7a21
commit 0e6905c39e
No known key found for this signature in database

View File

@ -461,6 +461,15 @@ nextMethod:
return CppClass{}, err
}
// Check for private signal
if i, ok := isPrivateSignal(&mm); ok {
// Remove only the QPrivateSignal parameter, keep other parameters
mm.Parameters = append(mm.Parameters[:i], mm.Parameters[i+1:]...)
mm.IsSignal = true
ret.PrivateSignals = append(ret.PrivateSignals, mm)
continue nextMethod
}
mm.IsSignal = isSignal && !mm.IsStatic && AllowSignal(mm)
mm.IsProtected = (visibility == VsProtected)
@ -515,6 +524,17 @@ func isExplicitlyDeleted(node map[string]interface{}) bool {
return false
}
// isPrivateSignal checks if a method is a private signal by looking for a
// QPrivateSignal parameter
func isPrivateSignal(method *CppMethod) (int, bool) {
for i, param := range method.Parameters {
if strings.HasSuffix(param.ParameterType, "::QPrivateSignal") {
return i, true
}
}
return -1, false
}
// processEnum parses a Clang enum into our CppEnum intermediate format.
func processEnum(node map[string]interface{}, addNamePrefix string) (CppEnum, error) {
var ret CppEnum