Skip to content

Commit

Permalink
Make sure that the names are populated when they are used
Browse files Browse the repository at this point in the history
  • Loading branch information
tmadlener committed Apr 13, 2023
1 parent a5b3581 commit 5b6a981
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions python/templates/DatamodelDefinition.h.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -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 %}
};
};
}


/**
Expand All @@ -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};
Expand Down

0 comments on commit 5b6a981

Please sign in to comment.