diff --git a/src/core/model/log.cc b/src/core/model/log.cc index 816057924..299d1f9e3 100644 --- a/src/core/model/log.cc +++ b/src/core/model/log.cc @@ -638,4 +638,28 @@ ParameterLogger::ParameterLogger (std::ostream &os) { } +template<> +ParameterLogger& +ParameterLogger::operator<< (const std::string param) +{ + if (m_first) + { + m_os << "\"" << param << "\""; + m_first = false; + } + else + { + m_os << ", \"" << param << "\""; + } + return *this; +} + +template<> +ParameterLogger& +ParameterLogger::operator<< (const char * param) +{ + (*this) << std::string (param); + return *this; +} + } // namespace ns3 diff --git a/src/core/model/log.h b/src/core/model/log.h index 3c67b86d7..b2b2de9bd 100644 --- a/src/core/model/log.h +++ b/src/core/model/log.h @@ -433,21 +433,44 @@ public: * \return This ParameterLogger, so it's chainable. */ template - ParameterLogger& operator<< (T param) - { - if (m_first) - { - m_os << param; - m_first = false; - } - else - { - m_os << ", " << param; - } - return *this; - } + ParameterLogger& operator<< (T param); + }; +template +ParameterLogger& +ParameterLogger::operator<< (T param) +{ + if (m_first) + { + m_os << param; + m_first = false; + } + else + { + m_os << ", " << param; + } + return *this; +} + +/** + * Specialization for strings. + * \param [in] param The function parameter. + * \return This ParameterLogger, so it's chainable. + */ +template<> +ParameterLogger& +ParameterLogger::operator<< (const std::string param); + +/** + * Specialization for C-strings. + * \param [in] param The function parameter. + * \return This ParameterLogger, so it's chainable. + */ +template<> +ParameterLogger& +ParameterLogger::operator<< (const char * param); + } // namespace ns3 /**@}*/ // \ingroup logging