diff --git a/src/Type.cc b/src/Type.cc index 2e8bbdd4bf..9ae12473ad 100644 --- a/src/Type.cc +++ b/src/Type.cc @@ -1367,6 +1367,14 @@ void EnumType::AddNameInternal(const string& module_name, const char* name, names[fullname] = val; } +void EnumType::AddNameInternal(const string& full_name, bro_int_t val) + { + names[full_name] = val; + + if ( vals.find(val) == vals.end() ) + vals[val] = make_intrusive(IntrusivePtr{NewRef{}, this}, val); + } + bro_int_t EnumType::Lookup(const string& module_name, const char* name) const { NameMap::const_iterator pos = diff --git a/src/Type.h b/src/Type.h index 6ea8a47fe3..e3c707d028 100644 --- a/src/Type.h +++ b/src/Type.h @@ -716,6 +716,8 @@ protected: void AddNameInternal(const std::string& module_name, const char* name, bro_int_t val, bool is_export); + void AddNameInternal(const std::string& full_name, bro_int_t val); + void CheckAndAddName(const std::string& module_name, const char* name, bro_int_t val, bool is_export, detail::Expr* deprecation = nullptr,