From fd5a6a44a357e54f46cade200bcd2e1fbdb239c7 Mon Sep 17 00:00:00 2001 From: "Peter D. Barnes, Jr" Date: Fri, 30 Sep 2022 12:03:23 -0700 Subject: [PATCH] core: refactor ParameterLogger specializations --- src/core/model/log.cc | 48 +++++++++++++++++-------------------------- src/core/model/log.h | 35 +++++++++++++------------------ 2 files changed, 33 insertions(+), 50 deletions(-) diff --git a/src/core/model/log.cc b/src/core/model/log.cc index 2e6495e84..8bc19dc16 100644 --- a/src/core/model/log.cc +++ b/src/core/model/log.cc @@ -642,23 +642,29 @@ NodePrinter LogGetNodePrinter (void) ParameterLogger::ParameterLogger (std::ostream &os) - : m_first (true), - m_os (os) + : m_os (os) {} + +void +ParameterLogger::CommaRest() +{ + if (m_first) + { + m_first = false; + } + else + { + m_os << ", "; + } +} + template<> ParameterLogger & ParameterLogger::operator<< (const std::string& param) { - if (m_first) - { - m_os << "\"" << param << "\""; - m_first = false; - } - else - { - m_os << ", \"" << param << "\""; - } + CommaRest(); + m_os << "\"" << param << "\""; return *this; } @@ -673,15 +679,7 @@ template<> ParameterLogger & ParameterLogger::operator<< (const int8_t param) { - if (m_first) - { - m_os << static_cast (param); - m_first = false; - } - else - { - m_os << ", " << static_cast (param); - } + (*this) << static_cast (param); return *this; } @@ -689,15 +687,7 @@ template<> ParameterLogger & ParameterLogger::operator<< (const uint8_t param) { - if (m_first) - { - m_os << static_cast (param); - m_first = false; - } - else - { - m_os << ", " << static_cast (param); - } + (*this) << static_cast (param); return *this; } diff --git a/src/core/model/log.h b/src/core/model/log.h index f0779e6af..b815efebc 100644 --- a/src/core/model/log.h +++ b/src/core/model/log.h @@ -448,9 +448,6 @@ LogComponent & GetLogComponent (const std::string name); */ class ParameterLogger { - bool m_first; //!< First argument flag, doesn't get `, `. - std::ostream &m_os; //!< Underlying output stream. - public: /** * Constructor. @@ -501,21 +498,23 @@ public: * \return This ParameterLogger, so it's chainable. */ ParameterLogger& operator<< (const char* param); + +private: + + /** Add `, ` before every parameter after the first. */ + void CommaRest(); + + bool m_first{true}; //!< First argument flag, doesn't get `, `. + std::ostream &m_os; //!< Underlying output stream. + }; template ParameterLogger& ParameterLogger::operator<< (T param) { - if (m_first) - { - m_os << param; - m_first = false; - } - else - { - m_os << ", " << param; - } + CommaRest(); + m_os << param; return *this; } @@ -523,18 +522,12 @@ template ParameterLogger& ParameterLogger::operator<< (const T& param) { - if (m_first) - { - m_os << param; - m_first = false; - } - else - { - m_os << ", " << param; - } + CommaRest(); + m_os << param; return *this; } + template ParameterLogger& ParameterLogger::operator<< (const std::vector& vector)