From 8fbb70f3e5514d7c95f93329e2b57a2c45306af7 Mon Sep 17 00:00:00 2001 From: halx99 Date: Sat, 12 Jan 2019 01:28:12 +0800 Subject: [PATCH] Add operator[] for xml_node, ensure child, more convinently for config updating --- src/pugixml.cpp | 8 ++++++++ src/pugixml.hpp | 3 +++ 2 files changed, 11 insertions(+) diff --git a/src/pugixml.cpp b/src/pugixml.cpp index 57bd50a..42b10ec 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -5482,6 +5482,14 @@ namespace pugi return (_root && _root->value) ? _root->value + 0 : PUGIXML_TEXT(""); } + PUGI__FN xml_node xml_node::operator[](const char_t* name) + { + if (!_root) return xml_node(); + auto node = this->child(name); + if (node) return node; + return this->append_child(name); + } + PUGI__FN xml_node xml_node::child(const char_t* name_) const { if (!_root) return xml_node(); diff --git a/src/pugixml.hpp b/src/pugixml.hpp index bfba0e3..759ea48 100644 --- a/src/pugixml.hpp +++ b/src/pugixml.hpp @@ -510,6 +510,9 @@ namespace pugi // Get text object for the current node xml_text text() const; + // Ensure child, more convinently for config updating + xml_node operator[](const char_t* name); + // Get child, attribute or next/previous sibling with the specified name xml_node child(const char_t* name) const; xml_attribute attribute(const char_t* name) const;