6 std::string
io_src = std::string(R
"(
10 #include "DataTypeInator.hpp"
11 #include "Type/SpecifiedCompositeType.hpp"
12 #include "Type/SpecifiedSequenceDataType.hpp"
14 #include "{{filename}}"
16 {{list_classes_class_type_decl}}
18 void populate_type_dictionary(DataTypeInator * dataTypeInator) {
20 // Register class types
22 {{list_classes_call_class_decl}}
27 {{list_stls_stl_decl}}
30 // Register typedef statements
32 {{list_typedefs_typedef_decl}}
37 dataTypeInator->validateDictionary();
41 std::string call_class_decl = std::string(R"(dataTypeInator->addToDictionary("{{ClassName}}", new SpecifiedCompositeType<{{ClassName}}>);
46 // ICG generated definition of the DataType for {{ClassName}}
49 class SpecifiedCompositeType<{{ClassName}}> : public CompositeDataType {
52 SpecifiedCompositeType() : CompositeDataType("{{ClassName}}", sizeof({{ClassName}}), &construct_composite<{{ClassName}}>, &destruct_composite<{{ClassName}}>) {}
54 template<typename Derived>
55 static MemberMap applyMembersToDerived () {
56 using type_to_add = {{ClassName}};
58 MemberMap derived_member_map = {
59 {{list_fields_derived_field_decl}}
62 {{list_bases_add_base_members_to_derived}}
64 return derived_member_map;
67 MemberMap& getMemberMap () {
68 using type_to_add = {{ClassName}};
70 static bool initialized = false;
71 static MemberMap member_map = {
72 {{list_fields_field_decl}}
76 {{list_bases_add_base_members_to_self}}
84 const MemberMap& getMemberMap () const override {
85 return (const_cast<SpecifiedCompositeType<{{ClassName}}>*> (this))->getMemberMap();
91 std::string derived_field_decl = std::string (R"({"{{FieldName}}", StructMember("{{FieldName}}", "{{FieldType}}", offsetof(Derived, type_to_add::{{FieldName}}))},
94 std::string field_decl = std::string(R"({"{{FieldName}}", StructMember("{{FieldName}}", "{{FieldType}}", offsetof(type_to_add, {{FieldName}}))},
97 std::string stl_decl = std::string(R"(dataTypeInator->addToDictionary("{{STLName}}", new SpecifiedSequenceDataType<{{STLName}}>("{{STLName}}"));
100 std::string typedef_decl = std::string(R"(dataTypeInator->addTypeDef("{{ExistingName}}", "{{AliasName}}");
104 auto derived_members = SpecifiedCompositeType<{{BaseClassName}}>::applyMembersToDerived<{{ClassName}}>();
105 member_map.insert(derived_members.begin(), derived_members.end());
109 auto derived_members = SpecifiedCompositeType<{{BaseClassName}}>::applyMembersToDerived<Derived>();
110 derived_member_map.insert(derived_members.begin(), derived_members.end());
std::string derived_field_decl
Definition: ICG_io_src_templates.hpp:91
std::string stl_decl
Definition: ICG_io_src_templates.hpp:97
std::map< std::string, std::string > template_dictionary
Definition: ICG_io_src_templates.hpp:113
std::string class_type_decl
Definition: ICG_io_src_templates.hpp:44
std::string add_base_members_to_self
Definition: ICG_io_src_templates.hpp:103
std::string call_class_decl
Definition: ICG_io_src_templates.hpp:41
std::string io_src
Definition: ICG_io_src_templates.hpp:6
std::string typedef_decl
Definition: ICG_io_src_templates.hpp:100
std::string field_decl
Definition: ICG_io_src_templates.hpp:94
std::string add_base_members_to_derived
Definition: ICG_io_src_templates.hpp:108