MCPcopy Create free account
hub / github.com/Autodesk/AutomaticComponentToolkit / writePascalFunctionType

Function writePascalFunctionType

Source/buildbindingpascal.go:1077–1120  ·  view source on GitHub ↗
(method ComponentDefinitionMethod, w LanguageWriter, NameSpace string, ClassName string, isGlobal bool, spacing string)

Source from the content-addressed store, hash-verified

1075}
1076
1077func writePascalFunctionType(method ComponentDefinitionMethod, w LanguageWriter, NameSpace string, ClassName string, isGlobal bool, spacing string) error {
1078
1079 PascalCallbackName := ""
1080 parameters := ""
1081 if isGlobal {
1082 PascalCallbackName = fmt.Sprintf("T%s%sFunc", NameSpace, method.MethodName)
1083 } else {
1084 PascalCallbackName = fmt.Sprintf("T%s%s_%sFunc", NameSpace, ClassName, method.MethodName)
1085 parameters = fmt.Sprintf("p%s: T%sHandle", ClassName, NameSpace)
1086 }
1087
1088 w.Writeln(spacing + "(**")
1089 w.Writeln(spacing+"* %s", method.MethodDescription)
1090 w.Writeln(spacing + "*")
1091 if !isGlobal {
1092 w.Writeln(spacing+"* @param[in] p%s - %s instance.", ClassName, ClassName)
1093 }
1094
1095 for k := 0; k < len(method.Params); k++ {
1096 param := method.Params[k]
1097
1098 pascalParams, err := generatePlainPascalParameter(param, ClassName, method.MethodName, NameSpace)
1099 if err != nil {
1100 return err
1101 }
1102
1103 for _, pascalParam := range pascalParams {
1104 w.Writeln(spacing + pascalParam.ParamComment)
1105 if parameters != "" {
1106 parameters = parameters + "; "
1107 }
1108 parameters = parameters + pascalParam.ParamConvention + pascalParam.ParamName + ": " + pascalParam.ParamType
1109 }
1110
1111 }
1112
1113 w.Writeln(spacing + "* @return error code or 0 (success)")
1114 w.Writeln(spacing + "*)")
1115
1116 w.Writeln(spacing+"%s = function(%s): T%sResult; cdecl;", PascalCallbackName, parameters, NameSpace)
1117 w.Writeln(spacing + "")
1118
1119 return nil
1120}
1121
1122func generatePlainPascalParameters(method ComponentDefinitionMethod, className string, NameSpace string) ([]pascalParameter, error) {
1123 parameters := []pascalParameter{}

Callers 1

Calls 2

WritelnMethod · 0.80

Tested by

no test coverage detected