From 6501206e6191206212703ebae98c1a95cf2bdc6f Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Tue, 2 Apr 2024 09:46:46 +0200 Subject: [PATCH] warn about overwritten enums --- src/bt_factory.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/bt_factory.cpp b/src/bt_factory.cpp index 3a263550e..4de1ae93d 100644 --- a/src/bt_factory.cpp +++ b/src/bt_factory.cpp @@ -448,7 +448,21 @@ void BehaviorTreeFactory::addMetadataToManifest(const std::string& node_id, void BehaviorTreeFactory::registerScriptingEnum(StringView name, int value) { - (*_p->scripting_enums)[std::string(name)] = value; + const auto str = std::string(name); + auto it = _p->scripting_enums->find(str); + if(it == _p->scripting_enums->end()) + { + _p->scripting_enums->insert({ str, value }); + } + else + { + if(it->second != value) + { + throw LogicError( + StrCat("Registering the enum [", name, "] twice with different values, first ", + std::to_string(it->second), " and later ", std::to_string(value))); + } + } } void BehaviorTreeFactory::clearSubstitutionRules()