genbindings: call correct c++ function for optional parameters

This commit is contained in:
mappu 2024-08-10 11:45:19 +12:00
parent f9abbed9c7
commit 6fb50dc267
3 changed files with 14 additions and 7 deletions

View File

@ -235,6 +235,11 @@ func emitBindingCpp(src *CppParsedHeader, filename string) (string, error) {
preamble, forwarding := emitParametersCABI2CppForwarding(m.Parameters) preamble, forwarding := emitParametersCABI2CppForwarding(m.Parameters)
nativeMethodName := m.MethodName
if m.OverrideMethodName != "" {
nativeMethodName = m.OverrideMethodName
}
ret.WriteString(fmt.Sprintf( ret.WriteString(fmt.Sprintf(
"%s %s_%s(%s) {\n"+ "%s %s_%s(%s) {\n"+
"%s"+ "%s"+
@ -244,7 +249,7 @@ func emitBindingCpp(src *CppParsedHeader, filename string) (string, error) {
"\n", "\n",
emitReturnTypeCabi(m.ReturnType), c.ClassName, m.SafeMethodName(), emitParametersCabi(m, "P"+c.ClassName), emitReturnTypeCabi(m.ReturnType), c.ClassName, m.SafeMethodName(), emitParametersCabi(m, "P"+c.ClassName),
preamble, preamble,
shouldReturn, c.ClassName, m.MethodName, forwarding, shouldReturn, c.ClassName, nativeMethodName, forwarding,
afterCall, afterCall,
)) ))
} }

View File

@ -25,6 +25,7 @@ type CppProperty struct {
type CppMethod struct { type CppMethod struct {
MethodName string MethodName string
OverrideMethodName string // Present only if we changed the target
ReturnType CppParameter // Name not used ReturnType CppParameter // Name not used
Parameters []CppParameter Parameters []CppParameter
} }

View File

@ -30,6 +30,7 @@ func astTransformOptional(parsed *CppParsedHeader) {
for x := optionalStart; x < len(m.Parameters); x++ { for x := optionalStart; x < len(m.Parameters); x++ {
dupMethod := CppMethod{ dupMethod := CppMethod{
MethodName: m.MethodName + fmt.Sprintf("%d", x+1), MethodName: m.MethodName + fmt.Sprintf("%d", x+1),
OverrideMethodName: m.MethodName,
ReturnType: m.ReturnType, ReturnType: m.ReturnType,
Parameters: nil, Parameters: nil,
} }