Rename clear() to reset(), and it now takes an optional node parameter.

This commit is contained in:
Jesse Beder
2013-04-02 20:39:54 -05:00
parent 5dbcf7eeb1
commit 0482463569
3 changed files with 12 additions and 6 deletions

View File

@@ -168,9 +168,10 @@ namespace YAML
return *this; 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<typename T> template<typename T>

View File

@@ -56,7 +56,7 @@ namespace YAML
bool is(const Node& rhs) const; bool is(const Node& rhs) const;
template<typename T> Node& operator=(const T& rhs); template<typename T> Node& operator=(const T& rhs);
Node& operator=(const Node& rhs); Node& operator=(const Node& rhs);
void clear(); void reset(const Node& rhs = Node());
// size/iterator // size/iterator
std::size_t size() const; std::size_t size() const;

View File

@@ -444,12 +444,17 @@ namespace Test
return true; return true;
} }
TEST ClearNode() TEST ResetNode()
{ {
YAML::Node node = YAML::Load("[1, 2, 3]"); YAML::Node node = YAML::Load("[1, 2, 3]");
YAML_ASSERT(!node.IsNull()); YAML_ASSERT(!node.IsNull());
node.clear(); YAML::Node other = node;
node.reset();
YAML_ASSERT(node.IsNull()); YAML_ASSERT(node.IsNull());
YAML_ASSERT(!other.IsNull());
node.reset(other);
YAML_ASSERT(!node.IsNull());
YAML_ASSERT(other == node);
return true; return true;
} }
} }
@@ -510,7 +515,7 @@ namespace Test
RunNodeTest(&Node::CloneMap, "clone map", passed, total); RunNodeTest(&Node::CloneMap, "clone map", passed, total);
RunNodeTest(&Node::CloneAlias, "clone alias", passed, total); RunNodeTest(&Node::CloneAlias, "clone alias", passed, total);
RunNodeTest(&Node::ForceInsertIntoMap, "force insert into map", 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"; std::cout << "Node tests: " << passed << "/" << total << " passed\n";
return passed == total; return passed == total;