From 959291afe69de05aaa7ceeb61b3b0ede7a54bfea Mon Sep 17 00:00:00 2001
From: Florent Le Coz <louiz@louiz.org>
Date: Fri, 22 Nov 2013 20:44:27 +0100
Subject: Set the parent of a node passed to add_child, and return it for
 conveniance

---
 src/xmpp/xmpp_stanza.cpp |  8 +++++---
 src/xmpp/xmpp_stanza.hpp | 11 +++++++++--
 2 files changed, 14 insertions(+), 5 deletions(-)

(limited to 'src')

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
-- 
cgit v1.2.3