diff options
author | Carlo Zancanaro <carlo@carlo-laptop> | 2012-07-09 03:36:11 +1000 |
---|---|---|
committer | Carlo Zancanaro <carlo@carlo-laptop> | 2012-07-09 03:36:11 +1000 |
commit | f7d846f18354e254353bc417ed1a666c59ef3ea2 (patch) | |
tree | 7d2b94142c48712c5bdfa61551811e03518b803b /impl/Log.hpp | |
parent | b8045f2fa861959cdd87bd88dc2c6be98c115ec8 (diff) |
Better implementation: smarter strategy iteration
Also add the beginnings of some log stuff, mayhaps.
Diffstat (limited to 'impl/Log.hpp')
-rw-r--r-- | impl/Log.hpp | 49 |
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 |