#include "Logs.h" #include "Time.h" #include #include template > class basic_nullbuf : public std::basic_streambuf { typename traits::int_type overflow(typename traits::int_type c) { return traits::not_eof(c); // indicate success } }; template > class basic_onullstream : public std::basic_ostream { public: basic_onullstream() : std::basic_ios(&m_sbuf), std::basic_ostream(&m_sbuf) { this->init(&m_sbuf); } private: basic_nullbuf m_sbuf; }; typedef basic_onullstream onullstream; static onullstream NULL_STREAM; static bool enabled = true; std::ostream &Logs::debug() { #ifdef NDEBUG return NULL_STREAM; #else if (enabled) { std::cout << "DEBUG - "; return std::cout; } else { return NULL_STREAM; } #endif } std::ostream &Logs::warning() { if (enabled) { std::cerr << "WARN - "; return std::cerr; } else { return NULL_STREAM; } } std::ostream &Logs::error() { if (enabled) { std::cerr << "ERROR - "; return std::cerr; } else { return NULL_STREAM; } } void Logs::debugTimestamp(const std::string &message) { debug() << Time::getRelativeTimeMs() << " - " << message << std::endl; } void Logs::disable() { enabled = false; }