core: refactor ParameterLogger specializations

This commit is contained in:
Peter D. Barnes, Jr
2022-09-30 12:03:23 -07:00
committed by Peter Barnes
parent 366c12b546
commit fd5a6a44a3
2 changed files with 33 additions and 50 deletions

View File

@@ -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<< <std::string> (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<< <int8_t> (const int8_t param)
{
if (m_first)
{
m_os << static_cast<int16_t> (param);
m_first = false;
}
else
{
m_os << ", " << static_cast<int16_t> (param);
}
(*this) << static_cast<int16_t> (param);
return *this;
}
@@ -689,15 +687,7 @@ template<>
ParameterLogger &
ParameterLogger::operator<< <uint8_t> (const uint8_t param)
{
if (m_first)
{
m_os << static_cast<uint16_t> (param);
m_first = false;
}
else
{
m_os << ", " << static_cast<uint16_t> (param);
}
(*this) << static_cast<uint16_t> (param);
return *this;
}

View File

@@ -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<typename T, typename U>
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<typename T, typename U>
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<typename T>
ParameterLogger&
ParameterLogger::operator<< (const std::vector<T>& vector)