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

Function buildCAbiHeader

Source/languagec.go:296–361  ·  view source on GitHub ↗
(component ComponentDefinition, w LanguageWriter, NameSpace string, BaseName string, useCPPTypes bool)

Source from the content-addressed store, hash-verified

294}
295
296func buildCAbiHeader(component ComponentDefinition, w LanguageWriter, NameSpace string, BaseName string, useCPPTypes bool) (error) {
297 sIncludeGuard := "__"+strings.ToUpper(NameSpace)+"_HEADER"
298 if (useCPPTypes) {
299 sIncludeGuard += "_CPP"
300 }
301
302 w.Writeln("#ifndef %s", sIncludeGuard);
303 w.Writeln("#define %s", sIncludeGuard);
304 w.Writeln("");
305
306 w.Writeln("#ifdef __%s_EXPORTS", strings.ToUpper (NameSpace));
307 w.Writeln("#ifdef _WIN32");
308 w.Writeln("#define %s_DECLSPEC __declspec (dllexport)", strings.ToUpper (NameSpace));
309 w.Writeln("#else // _WIN32");
310 w.Writeln("#define %s_DECLSPEC __attribute__((visibility(\"default\")))", strings.ToUpper (NameSpace));
311 w.Writeln("#endif // _WIN32");
312
313 w.Writeln("#else // __%s_EXPORTS", strings.ToUpper (NameSpace));
314 w.Writeln("#define %s_DECLSPEC", strings.ToUpper (NameSpace));
315 w.Writeln("#endif // __%s_EXPORTS", strings.ToUpper (NameSpace));
316 w.Writeln("");
317
318 if (useCPPTypes) {
319 w.Writeln("#include \"%s_types.hpp\"", BaseName);
320 } else {
321 w.Writeln("#include \"%s_types.h\"", BaseName);
322 }
323 w.Writeln("");
324 for _, subComponent := range(component.ImportedComponentDefinitions) {
325 w.Writeln("#include \"%s_dynamic.hpp\"", subComponent.BaseName)
326 }
327 w.Writeln("")
328
329
330 w.Writeln("extern \"C\" {");
331
332 for i := 0; i < len(component.Classes); i++ {
333 class := component.Classes[i];
334 err := writeClassMethodsIntoCCPPHeader(component, class, w, NameSpace, useCPPTypes)
335 if (err != nil) {
336 return err;
337 }
338 }
339
340 w.Writeln("");
341 w.Writeln("/*************************************************************************************************************************");
342 w.Writeln(" Global functions");
343 w.Writeln("**************************************************************************************************************************/");
344
345 global := component.Global;
346 for j := 0; j < len(global.Methods); j++ {
347 method := global.Methods[j];
348 err := WriteCCPPAbiMethod(method, w, NameSpace, "Wrapper", true, false, useCPPTypes);
349 if (err != nil) {
350 return err;
351 }
352 }
353

Callers 2

CreateCAbiHeaderFunction · 0.85
CreateCPPAbiHeaderFunction · 0.85

Calls 3

WriteCCPPAbiMethodFunction · 0.85
WritelnMethod · 0.80

Tested by

no test coverage detected