A few cleanups, and make a few things more modern
This commit is contained in:
@@ -124,12 +124,12 @@ void XmppParser::end_element(const XML_Char*)
|
||||
}
|
||||
}
|
||||
|
||||
void XmppParser::char_data(const XML_Char* data, int len)
|
||||
void XmppParser::char_data(const XML_Char* data, const size_t len)
|
||||
{
|
||||
if (this->current_node->has_children())
|
||||
this->current_node->get_last_child()->add_to_tail(std::string(data, len));
|
||||
this->current_node->get_last_child()->add_to_tail({data, len});
|
||||
else
|
||||
this->current_node->add_to_inner(std::string(data, len));
|
||||
this->current_node->add_to_inner({data, len});
|
||||
}
|
||||
|
||||
void XmppParser::stanza_event(const Stanza& stanza) const
|
||||
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
/**
|
||||
* Some inner or tail data has been parsed
|
||||
*/
|
||||
void char_data(const XML_Char* data, int len);
|
||||
void char_data(const XML_Char* data, const size_t len);
|
||||
/**
|
||||
* Calls all the stanza_callbacks one by one.
|
||||
*/
|
||||
|
||||
@@ -199,6 +199,11 @@ void XmlNode::set_name(const std::string& name)
|
||||
this->name = name;
|
||||
}
|
||||
|
||||
void XmlNode::set_name(std::string&& name)
|
||||
{
|
||||
this->name = std::move(name);
|
||||
}
|
||||
|
||||
const std::string XmlNode::get_name() const
|
||||
{
|
||||
return this->name;
|
||||
@@ -228,7 +233,7 @@ bool XmlNode::has_children() const
|
||||
return !this->children.empty();
|
||||
}
|
||||
|
||||
const std::string XmlNode::get_tag(const std::string& name) const
|
||||
const std::string& XmlNode::get_tag(const std::string& name) const
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -237,7 +242,8 @@ const std::string XmlNode::get_tag(const std::string& name) const
|
||||
}
|
||||
catch (const std::out_of_range& e)
|
||||
{
|
||||
return "";
|
||||
static const std::string def{};
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -96,6 +96,7 @@ public:
|
||||
XmlNode* get_last_child() const;
|
||||
XmlNode* get_parent() const;
|
||||
void set_name(const std::string& name);
|
||||
void set_name(std::string&& name);
|
||||
const std::string get_name() const;
|
||||
/**
|
||||
* Serialize the stanza into a string
|
||||
@@ -110,7 +111,7 @@ public:
|
||||
* Gets the value for the given attribute, returns an empty string if the
|
||||
* node as no such attribute.
|
||||
*/
|
||||
const std::string get_tag(const std::string& name) const;
|
||||
const std::string& get_tag(const std::string& name) const;
|
||||
/**
|
||||
* Remove the attribute of the node. Does nothing if that attribute is not
|
||||
* present. Returns true if the tag was removed, false if it was absent.
|
||||
@@ -133,13 +134,13 @@ private:
|
||||
XmlNode& operator=(XmlNode&&) = delete;
|
||||
};
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const XmlNode& node);
|
||||
|
||||
/**
|
||||
* An XMPP stanza is just an XML node of level 2 in the XMPP document (the
|
||||
* level 1 ones are the <stream::stream/>, and the ones above 2 are just the
|
||||
* content of the stanzas)
|
||||
*/
|
||||
typedef XmlNode Stanza;
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const XmlNode& node);
|
||||
using Stanza = XmlNode;
|
||||
|
||||
#endif // XMPP_STANZA_INCLUDED
|
||||
|
||||
Reference in New Issue
Block a user