summaryrefslogtreecommitdiff
path: root/impl/Log.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'impl/Log.hpp')
-rw-r--r--impl/Log.hpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/impl/Log.hpp b/impl/Log.hpp
new file mode 100644
index 0000000..a920906
--- /dev/null
+++ b/impl/Log.hpp
@@ -0,0 +1,49 @@
+#ifndef LOG_HPP
+#define LOG_HPP
+
+#include <string>
+#include <ostream>
+#include <map>
+
+namespace log {
+
+ struct Logger {
+ Logger(std::ostream& stream, const std::string& name)
+ : _stream(stream),
+ _name(name),
+ _enabled(false) {}
+
+ bool enabled() const {
+ return _enabled;
+ }
+
+ bool enabled(bool v) {
+ bool ret = _enabled;
+ _enabled = v;
+ return ret;
+ }
+
+ template<typename T>
+ friend Logger& operator<<(Logger&, const T&);
+
+ private:
+ std::ostream& _stream;
+ std::string _name;
+ bool _enabled;
+ };
+
+ template<typename T>
+ Logger& operator<<(Logger& logger, const T& obj) {
+ if (logger._enabled) {
+ logger._stream << logger._name << " :- " << obj << std::endl;
+ }
+ return logger;
+ }
+
+ Logger trace(std::cerr, "trace");
+ Logger strategy(std::cerr, "strategy");
+ Logger debug(std::cerr, "debug");
+
+}
+
+#endif