diff options
-rw-r--r-- | src/xmpp/xmpp_stanza.cpp | 8 | ||||
-rw-r--r-- | src/xmpp/xmpp_stanza.hpp | 11 |
2 files changed, 14 insertions, 5 deletions
diff --git a/src/xmpp/xmpp_stanza.cpp b/src/xmpp/xmpp_stanza.cpp index 348d73c..85bd6b5 100644 --- a/src/xmpp/xmpp_stanza.cpp +++ b/src/xmpp/xmpp_stanza.cpp @@ -152,15 +152,17 @@ XmlNode* XmlNode::get_child(const std::string& name) const return nullptr; } -void XmlNode::add_child(XmlNode* child) +XmlNode* XmlNode::add_child(XmlNode* child) { + child->parent = this; this->children.push_back(child); + return child; } -void XmlNode::add_child(XmlNode&& child) +XmlNode* XmlNode::add_child(XmlNode&& child) { XmlNode* new_node = new XmlNode(std::move(child)); - this->add_child(new_node); + return this->add_child(new_node); } XmlNode* XmlNode::get_last_child() const diff --git a/src/xmpp/xmpp_stanza.hpp b/src/xmpp/xmpp_stanza.hpp index 2ce8ce2..ca21ab4 100644 --- a/src/xmpp/xmpp_stanza.hpp +++ b/src/xmpp/xmpp_stanza.hpp @@ -77,8 +77,15 @@ public: * Get a pointer to the first child element with that name */ XmlNode* get_child(const std::string& name) const; - void add_child(XmlNode* child); - void add_child(XmlNode&& child); + /** + * Add a node child to this node. Assign this node to the child’s parent. + * Returns a pointer to the newly added child. + */ + XmlNode* add_child(XmlNode* child); + XmlNode* add_child(XmlNode&& child); + /** + * Returns the last of the children + */ XmlNode* get_last_child() const; /** * Mark this node as closed, nothing else |