schema_salad.cpp_codegen
C++17 code generator for a given Schema Salad definition.
Currently only supports emiting YAML from the C++ objects, not yet parsing YAML into C++ objects.
The generated code requires the libyaml-cpp library & headers
To see an example of usage, look at schema_salad/tests/codegen/cwl.cpp which can be combined with the CWL V1.0 schema as shown below:
schema-salad-tool --codegen cpp schema_salad/tests/test_schema/CommonWorkflowLanguage.yml > cwl_v1_0.h
g++ --std=c++20 -I. -lyaml-cpp schema_salad/tests/codegen/cwl.cpp -o cwl-v1_0-test
./cwl-v1_0-test
# g++ versions older than version 10 may need "--std=c++2a" instead of "--std=c++20"
Module Contents
Classes
Generation of C++ code for a given Schema Salad definition. |
Functions
Rename keywords that are reserved in C++. |
|
|
Create a C++ safe name. |
|
Create a namespaced safename. |
|
|
|
|
|
|
|
|
|
|
|
|
- schema_salad.cpp_codegen.replaceKeywords(s)
Rename keywords that are reserved in C++.
- schema_salad.cpp_codegen.safename(name)
Create a C++ safe name.
- schema_salad.cpp_codegen.safename2(name)
Create a namespaced safename.
- class schema_salad.cpp_codegen.ClassDefinition(name)
- Parameters:
name (str) –
- writeFwdDeclaration(target, fullInd, ind)
- writeDefinition(target, fullInd, ind)
- class schema_salad.cpp_codegen.FieldDefinition(name, typeStr, optional)
- class schema_salad.cpp_codegen.EnumDefinition(name, values)
- schema_salad.cpp_codegen.hasFieldValue(e, f, v)
- class schema_salad.cpp_codegen.CppCodeGen(base, target, examples, package, copyright)
Bases:
digraph inheritanceb32d88fe87 { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "CodeGenBase" [URL="../codegen_base/index.html#schema_salad.codegen_base.CodeGenBase",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract base class for schema salad code generators."]; "CppCodeGen" [URL="#schema_salad.cpp_codegen.CppCodeGen",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Generation of C++ code for a given Schema Salad definition."]; "CodeGenBase" -> "CppCodeGen" [arrowsize=0.5,style="setlinewidth(0.5)"]; }schema_salad.codegen_base.CodeGenBase
Generation of C++ code for a given Schema Salad definition.
- Parameters:
- convertTypeToCpp(type_declaration)
Convert a Schema Salad type to a C++ type.
- epilogue(root_loader)
Trigger to generate the epilouge code.
- Parameters:
root_loader (Optional[schema_salad.codegen_base.TypeDef]) –
- Return type:
None