From b2c35cdf69a9084806ac7930cf4475980d596cf6 Mon Sep 17 00:00:00 2001 From: Roland Reichwein Date: Sat, 4 Jan 2025 11:28:20 +0100 Subject: Separate out implementation from headers --- log.h | 50 +++++++------------------------------------------- 1 file changed, 7 insertions(+), 43 deletions(-) (limited to 'log.h') diff --git a/log.h b/log.h index cfc4d4c..9aea958 100644 --- a/log.h +++ b/log.h @@ -8,27 +8,17 @@ class log_stream { public: - log_stream(): m_active(false), m_buffer(), m_log_lines() {} + log_stream(); - void log_lines(int n) { - m_log_lines = n; - } + void log_lines(int n); - std::string get_log() { - return m_buffer.str(); - } + std::string get_log(); // log to buffer - void activate() - { - m_active = true; - } + void activate(); // log to plain console - void deactivate() - { - m_active = false; - } + void deactivate(); template log_stream& operator<<(const T& arg) { @@ -45,36 +35,10 @@ public: log_stream& operator<<( std::basic_ostream& (*func) - (std::basic_ostream&) ) { - if (m_active) { - m_buffer << *func; - trim_buffer(); - } - else - { - std::cout << *func; - } - return *this; - } + (std::basic_ostream&) ); private: - void trim_buffer() - { - std::string s = m_buffer.str(); - size_t pos = s.npos; - for (int i = 0; i <= m_log_lines; ++i) { - pos = s.rfind("\n", pos); - if (pos == s.npos) { - // too few lines - return; - } - if (pos > 0) { - --pos; - } - } - - m_buffer.str(s.substr((pos <= (s.size() - 2)) ? pos + 2 : pos)); - } + void trim_buffer(); bool m_active; std::stringstream m_buffer; -- cgit v1.2.3