diff --git a/src/EventRegistry.cc b/src/EventRegistry.cc index 957f90efe0..44018421c0 100644 --- a/src/EventRegistry.cc +++ b/src/EventRegistry.cc @@ -3,16 +3,19 @@ #include "RE.h" #include "Reporter.h" +EventRegistry::EventRegistry() = default; +EventRegistry::~EventRegistry() noexcept = default; + void EventRegistry::Register(EventHandlerPtr handler) { - handlers[string(handler->Name())] = handler.Ptr(); + handlers[string(handler->Name())] = std::unique_ptr(handler.Ptr()); } EventHandler* EventRegistry::Lookup(const string& name) { auto it = handlers.find(name); if ( it != handlers.end() ) - return it->second; + return it->second.get(); return nullptr; } @@ -23,7 +26,7 @@ EventRegistry::string_list EventRegistry::Match(RE_Matcher* pattern) for ( const auto& entry : handlers ) { - EventHandler* v = entry.second; + EventHandler* v = entry.second.get(); if ( v->LocalHandler() && pattern->MatchExactly(v->Name()) ) names.push_back(entry.first); } @@ -37,7 +40,7 @@ EventRegistry::string_list EventRegistry::UnusedHandlers() for ( const auto& entry : handlers ) { - EventHandler* v = entry.second; + EventHandler* v = entry.second.get(); if ( v->LocalHandler() && ! v->Used() ) names.push_back(entry.first); } @@ -51,7 +54,7 @@ EventRegistry::string_list EventRegistry::UsedHandlers() for ( const auto& entry : handlers ) { - EventHandler* v = entry.second; + EventHandler* v = entry.second.get(); if ( v->LocalHandler() && v->Used() ) names.push_back(entry.first); } @@ -75,7 +78,7 @@ void EventRegistry::PrintDebug() { for ( const auto& entry : handlers ) { - EventHandler* v = entry.second; + EventHandler* v = entry.second.get(); fprintf(stderr, "Registered event %s (%s handler / %s)\n", v->Name(), v->LocalHandler()? "local" : "no", *v ? "active" : "not active" diff --git a/src/EventRegistry.h b/src/EventRegistry.h index e49366e0d3..2619f3e044 100644 --- a/src/EventRegistry.h +++ b/src/EventRegistry.h @@ -3,6 +3,7 @@ #pragma once #include +#include #include #include @@ -16,8 +17,8 @@ class RE_Matcher; // The registry keeps track of all events that we provide or handle. class EventRegistry { public: - EventRegistry() { } - ~EventRegistry() { } + EventRegistry(); + ~EventRegistry() noexcept; void Register(EventHandlerPtr handler); @@ -41,7 +42,7 @@ public: void PrintDebug(); private: - std::map handlers; + std::map> handlers; }; extern EventRegistry* event_registry;