diff --git a/emper/Debug.hpp b/emper/Debug.hpp index dca6fe1c946d2dbb33ad5c24e84ec42fe9d81752..033122a8c51acb03f42a2cc28c9d3b96fe666490 100644 --- a/emper/Debug.hpp +++ b/emper/Debug.hpp @@ -60,21 +60,33 @@ enum LogLevel { void worker_log(const std::string& prefix, const std::string& message); -static const std::map<LogSubsystem, LogLevel> LOG_CONFIG = { - { LogSubsystem::PS, ALL }, - { LogSubsystem::F, ALL }, - { LogSubsystem::C, ALL }, - { LogSubsystem::CM, ALL }, - { LogSubsystem::DISP, ALL }, - { LogSubsystem::SCHED, ALL }, - { LogSubsystem::RUNTI, ALL }, - { LogSubsystem::U_B_MPSC_Q, ALL }, -}; - template <LogSubsystem logSubsystem> class Logger { private: + static constexpr LogLevel getLevelFor(LogSubsystem system) { + switch (system) { + case LogSubsystem::PS: + return ALL; + case LogSubsystem::F: + return ALL; + case LogSubsystem::C: + return ALL; + case LogSubsystem::CM: + return ALL; + case LogSubsystem::DISP: + return ALL; + case LogSubsystem::SCHED: + return ALL; + case LogSubsystem::RUNTI: + return ALL; + case LogSubsystem::U_B_MPSC_Q: + return ALL; + default: + return ALL; + } + } + static constexpr char const * getTagFor(LogSubsystem system) { switch (system) { case LogSubsystem::PS: @@ -115,7 +127,7 @@ protected: // Do not log any debug messages if NDEBUG is defined. if (level >= Debug) return; #endif - if (level > LOG_CONFIG.at(logSubsystem)) return; + if (level > getLevelFor(logSubsystem)) return; std::string subSystemTag = getTagFor(logSubsystem);;