]> git.tdb.fi Git - builder.git/blobdiff - source/logger.cpp
Refactor logger to do message formatting internally
[builder.git] / source / logger.cpp
index 901800ec30fc2736113227988cc480f25a722d45..35d45079e98e8b05dc5b44413c5cd094fdb802e1 100644 (file)
@@ -1,3 +1,4 @@
+#include <msp/core/algorithm.h>
 #include <msp/io/print.h>
 #include "logger.h"
 
@@ -6,16 +7,31 @@ using namespace Msp;
 
 void Logger::enable_channel(const string &chan)
 {
-       enabled_channels.insert(chan);
+       auto i = lower_bound(enabled_channels, chan);
+       if(i==enabled_channels.end() || *i!=chan)
+               enabled_channels.insert(i, chan);
 }
 
 void Logger::disable_channel(const string &chan)
 {
-       enabled_channels.erase(chan);
+       auto i = lower_bound(enabled_channels, chan);
+       if(i!=enabled_channels.end() && *i==chan)
+               enabled_channels.erase(i);
+}
+
+bool Logger::is_channel_enabled(const string &chan) const
+{
+       auto i = lower_bound(enabled_channels, chan);
+       return (i!=enabled_channels.end() && *i==chan);
 }
 
 void Logger::log(const string &chan, const string &message) const
 {
-       if(enabled_channels.count(chan))
-               IO::print("%s\n", message);
+       if(is_channel_enabled(chan))
+               print(message);
+}
+
+void Logger::print(const string &message) const
+{
+       IO::print("%s\n", message);
 }