diff --git a/include/yaml-cpp/node/impl.h b/include/yaml-cpp/node/impl.h index e25bff0..d46f329 100644 --- a/include/yaml-cpp/node/impl.h +++ b/include/yaml-cpp/node/impl.h @@ -15,7 +15,7 @@ namespace YAML { - inline Node::Node(): m_pNode(0) + inline Node::Node(): m_pNode(NULL) { } @@ -168,6 +168,11 @@ namespace YAML return *this; } + inline void Node::clear() + { + m_pNode = NULL; + } + template inline void Node::Assign(const T& rhs) { diff --git a/include/yaml-cpp/node/node.h b/include/yaml-cpp/node/node.h index 70acb3e..d4ee442 100644 --- a/include/yaml-cpp/node/node.h +++ b/include/yaml-cpp/node/node.h @@ -56,6 +56,7 @@ namespace YAML bool is(const Node& rhs) const; template Node& operator=(const T& rhs); Node& operator=(const Node& rhs); + void clear(); // size/iterator std::size_t size() const; diff --git a/test/new-api/nodetests.cpp b/test/new-api/nodetests.cpp index 556e06b..bc6d6fa 100644 --- a/test/new-api/nodetests.cpp +++ b/test/new-api/nodetests.cpp @@ -443,6 +443,15 @@ namespace Test YAML_ASSERT(xy); return true; } + + TEST ClearNode() + { + YAML::Node node = YAML::Load("[1, 2, 3]"); + YAML_ASSERT(!node.IsNull()); + node.clear(); + YAML_ASSERT(node.IsNull()); + return true; + } } void RunNodeTest(TEST (*test)(), const std::string& name, int& passed, int& total) { @@ -501,6 +510,7 @@ namespace Test RunNodeTest(&Node::CloneMap, "clone map", passed, total); RunNodeTest(&Node::CloneAlias, "clone alias", passed, total); RunNodeTest(&Node::ForceInsertIntoMap, "force insert into map", passed, total); + RunNodeTest(&Node::ClearNode, "clear node", passed, total); std::cout << "Node tests: " << passed << "/" << total << " passed\n"; return passed == total;