SGPropertyNode: add removeAllChildren() method

This commit is contained in:
Thomas Geymayer 2013-12-07 13:42:15 +01:00
parent 2c3f44ae11
commit 42b50bd7f7
2 changed files with 21 additions and 0 deletions

View File

@ -1075,6 +1075,21 @@ SGPropertyNode::removeChildren (const char * name, bool keep)
return children;
}
void
SGPropertyNode::removeAllChildren()
{
for(unsigned i = 0; i < _children.size(); ++i)
{
SGPropertyNode_ptr& node = _children[i];
node->_parent = 0;
node->setAttribute(REMOVED, true);
node->clearValue();
fireChildRemoved(node);
}
_children.clear();
}
string
SGPropertyNode::getDisplayName (bool simplify) const
{

View File

@ -910,6 +910,7 @@ public:
simgear::PropertyList getChildren (const std::string& name) const
{ return getChildren(name.c_str()); }
// TODO do we need the removeXXX methods to return the deleted nodes?
/**
* Remove child by position.
*/
@ -941,6 +942,11 @@ public:
bool keep = true)
{ return removeChildren(name.c_str(), keep); }
/**
* Remove all children (does not change the value of the node)
*/
void removeAllChildren();
//
// Alias support.
//