// generated file, do not modify! // {{ dateTime }} #ifndef HEADER_{{ moduleName }}_H #define HEADER_{{ moduleName }}_H #include "RT.hpp" {% for m in imports %} #include "{{ m.value }}.hpp" {% endfor %} {% for t in dataAndType %} {% case t.value | constType %} {% when "DataDef" %} class {{ t.value.dataName }} { public: enum class tag { {% for c in t.value.constructors %} {{ c.value.name }}{% if !c.last %},{% endif %}{% endfor %} } tag; }; namespace data { {% for c in t.value.constructors %}{% if !(c.value.fields | empty) %} class {{ c.value.name }} : public ::{{ t.value.dataName }} { public:{% for f in c.value.fields %}{% if c.value.fields | hasFieldNames %} {{ f.value.fieldType | cppType }} {{ f.value.fieldName }};{% else %} {{ f.value.fieldType | cppType | parens }} _{{ f.index0 }};{% endif %}{% endfor %} {{ c.value.name }}() { tag = tag::{{ c.value.name }}; } };{% endif %}{% endfor %} } {% when "TypeAlias" %} {% case t.value.aliasType.tag %} {% when "Data" %} typedef {{ t.value.aliasType.name_ }} {{ t.value.aliasName }}; {% else %} typedef {{ t.value.aliasType | cppType }} {{ t.value.aliasName }}; {% endcase %} {% endcase %} {% endfor %} #endif