+ The number of field/value pairs must match the fieldcount parameter.\r
+\r
+ \param name The name of the message\r
+ \param fieldcount The number of field/value pairs that follow\r
+ */\r
+ Message(const std::string &name, const int fieldcount, ...);\r
+\r
+ /**\r
+ \brief Gets the name of the message\r
+\r
+ \return The name of the message\r
+ */\r
+ const std::string &GetName() const { return m_name; }\r
+ /**\r
+ \brief Sets the name of the message\r
+\r
+ \param name The name of the message\r
+ */\r
+ void SetName(const std::string &name) { m_name=name; }\r
+\r
+ /**\r
+ \brief Accesses the field/value pairs\r
+\r
+ \param field The field to access\r
+ \return Reference to the value of the field\r
+ */\r
+ std::string &operator[](const std::string &field) { return m_fields[field]; }\r
+\r
+ /**\r
+ \brief Non-const accessor for field map\r
+\r
+ \return field map\r
+ */\r
+ std::map<std::string,std::string> &GetFields() { return m_fields; }\r
+ /**\r
+ \brief Const accessor for field map\r
+\r
+ \return field map\r
+ */\r
+ const std::map<std::string,std::string> &GetFields() const { return m_fields; }\r
+ \r
+ /**\r
+ \brief Clears the name and fields of the message\r
+ */\r
+ void Clear() { m_name=""; m_fields.clear(); }\r
+ \r
+ const bool operator==(const Message &rhs) const { return (m_name==rhs.m_name && m_fields==rhs.m_fields); }\r
+ const bool operator!=(const Message &rhs) const { return !(*this==rhs); }\r
+ const bool operator<(const Message &rhs) const { return (m_name<rhs.m_name || (m_name==rhs.m_name && m_fields<rhs.m_fields)); }\r
+ const bool operator<=(const Message &rhs) const { return (*this==rhs || *this<rhs); }\r
+ const bool operator>(const Message &rhs) const { return !(*this<=rhs); }\r
+ const bool operator>=(const Message &rhs) const { return !(*this<rhs); }\r