From 0482463569ae3f1884b35ebed1d11ccb29dea262 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 2 Apr 2013 20:39:54 -0500 Subject: [PATCH] Rename clear() to reset(), and it now takes an optional node parameter. --- include/yaml-cpp/node/impl.h | 5 +++-- include/yaml-cpp/node/node.h | 2 +- test/new-api/nodetests.cpp | 11 ++++++++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/include/yaml-cpp/node/impl.h b/include/yaml-cpp/node/impl.h index d46f329..803557c 100644 --- a/include/yaml-cpp/node/impl.h +++ b/include/yaml-cpp/node/impl.h @@ -168,9 +168,10 @@ namespace YAML return *this; } - inline void Node::clear() + inline void Node::reset(const YAML::Node& rhs) { - m_pNode = NULL; + m_pMemory = rhs.m_pMemory; + m_pNode = rhs.m_pNode; } template diff --git a/include/yaml-cpp/node/node.h b/include/yaml-cpp/node/node.h index d4ee442..179716c 100644 --- a/include/yaml-cpp/node/node.h +++ b/include/yaml-cpp/node/node.h @@ -56,7 +56,7 @@ namespace YAML bool is(const Node& rhs) const; template Node& operator=(const T& rhs); Node& operator=(const Node& rhs); - void clear(); + void reset(const Node& rhs = Node()); // size/iterator std::size_t size() const; diff --git a/test/new-api/nodetests.cpp b/test/new-api/nodetests.cpp index bc6d6fa..394a04a 100644 --- a/test/new-api/nodetests.cpp +++ b/test/new-api/nodetests.cpp @@ -444,12 +444,17 @@ namespace Test return true; } - TEST ClearNode() + TEST ResetNode() { YAML::Node node = YAML::Load("[1, 2, 3]"); YAML_ASSERT(!node.IsNull()); - node.clear(); + YAML::Node other = node; + node.reset(); YAML_ASSERT(node.IsNull()); + YAML_ASSERT(!other.IsNull()); + node.reset(other); + YAML_ASSERT(!node.IsNull()); + YAML_ASSERT(other == node); return true; } } @@ -510,7 +515,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); + RunNodeTest(&Node::ResetNode, "reset node", passed, total); std::cout << "Node tests: " << passed << "/" << total << " passed\n"; return passed == total;