Skip to content

Commit 15bded8

Browse files
robertgoss-workmartinweismann
authored andcommitted
ABIhas changed use extended handle to pass class data
1 parent eccfe4d commit 15bded8

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

Source/buildbindingpython.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,16 @@ func buildDynamicPythonImplementation(componentdefinition ComponentDefinition, w
251251
w.Writeln("")
252252
}
253253

254+
w.Writeln("")
255+
w.Writeln("'''Extended handle type")
256+
w.Writeln("'''")
257+
w.Writeln("class %sExtendedHandle(ctypes.Structure):", NameSpace)
258+
w.Writeln(" _pack_ = 1")
259+
w.Writeln(" _fields_ = [")
260+
w.Writeln(" ('handle', ctypes.c_void_p)")
261+
w.Writeln(" ('symbolLookupMethod', ctypes.c_void_p)")
262+
263+
254264
w.Writeln("")
255265
w.Writeln("'''Wrapper Class Implementation")
256266
w.Writeln("'''")
@@ -504,6 +514,10 @@ func loadFunctionTable(componentdefinition ComponentDefinition, w LanguageWriter
504514
return nil
505515
}
506516

517+
func getExtendedHandleName(NameSpace string, ParamClass string)(string) {
518+
return ParamClass + "ExtendedHandle";
519+
}
520+
507521
func getCTypesParameterTypeName(ParamTypeName string, NameSpace string, ParamClass string, isPlain bool)(string, error) {
508522
CTypesParamTypeName := "";
509523
switch (ParamTypeName) {
@@ -548,7 +562,7 @@ func getCTypesParameterTypeName(ParamTypeName string, NameSpace string, ParamCla
548562
case "functiontype":
549563
return fmt.Sprintf("%s", ParamClass), nil
550564
case "class", "optionalclass":
551-
CTypesParamTypeName = "ctypes.c_void_p";
565+
CTypesParamTypeName = getExtendedHandleName(ParamClass, NameSpace);
552566
default:
553567
return "", fmt.Errorf ("invalid parameter type \"%s\" for Python parameter", ParamTypeName);
554568
}

0 commit comments

Comments
 (0)