From 5b6a98197ae1d11b1f6c463dcb1c4530604ead49 Mon Sep 17 00:00:00 2001 From: tmadlener Date: Thu, 13 Apr 2023 14:21:42 +0200 Subject: [PATCH] Make sure that the names are populated when they are used --- python/templates/DatamodelDefinition.h.jinja2 | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/python/templates/DatamodelDefinition.h.jinja2 b/python/templates/DatamodelDefinition.h.jinja2 index 760e3488e..6b3eca5e5 100644 --- a/python/templates/DatamodelDefinition.h.jinja2 +++ b/python/templates/DatamodelDefinition.h.jinja2 @@ -8,19 +8,21 @@ namespace {{ package_name }}::meta { */ static constexpr auto {{ package_name }}__JSONDefinition = R"DATAMODELDEF({{ edm_definition }})DATAMODELDEF"; -using namespace std::string_view_literals; /** * The names of all relations and vector members for all datatypes */ -const static podio::RelationNameMapping {{ package_name }}__relationNames = { +inline podio::RelationNameMapping {{ package_name }}__getRelationNames() { + using namespace std::string_view_literals; + return { {% for typeName, type in datatypes.items() %} - {"{{ typeName }}", - { {{ (type.OneToManyRelations + type.OneToOneRelations) | map(attribute="name") | map("quoted_sv") | join(", ") }} }, - { {{ type.VectorMembers | map(attribute="name") | map("quoted_sv") | join(", ")}} }, - }, + {"{{ typeName }}"sv, + { {{ (type.OneToManyRelations + type.OneToOneRelations) | map(attribute="name") | map("quoted_sv") | join(", ") }} }, + { {{ type.VectorMembers | map(attribute="name") | map("quoted_sv") | join(", ")}} }, + }, {% endfor %} -}; + }; +} /** @@ -33,10 +35,10 @@ const static podio::RelationNameMapping {{ package_name }}__relationNames = { class DatamodelRegistryIndex { public: static size_t value() { - static auto index = DatamodelRegistryIndex(podio::DatamodelRegistry::mutInstance().registerDatamodel("{{ package_name }}", {{ package_name }}__JSONDefinition, {{ package_name }}__relationNames)); + static const auto relationNames = {{ package_name }}__getRelationNames(); + static auto index = DatamodelRegistryIndex(podio::DatamodelRegistry::mutInstance().registerDatamodel("{{ package_name }}", {{ package_name }}__JSONDefinition, relationNames)); return index.m_value; } - private: DatamodelRegistryIndex(size_t v) : m_value(v) {} size_t m_value{podio::DatamodelRegistry::NoDefinitionAvailable};