]> git.mxchange.org Git - simgear.git/commitdiff
Restore the old behavior. Additions are likely.
authorehofman <ehofman>
Thu, 30 Jun 2005 19:10:18 +0000 (19:10 +0000)
committerehofman <ehofman>
Thu, 30 Jun 2005 19:10:18 +0000 (19:10 +0000)
simgear/props/props.cxx
simgear/props/props.hxx

index 6f8495c770c692b3dd8c7d6c78bb486c73767efa..dd8cb0c01fea7436eb50bf4be6bff8d733f0f48d 100644 (file)
@@ -778,7 +778,6 @@ SGPropertyNode::alias (SGPropertyNode * target)
   clearValue();
   _value.alias = target;
   _type = ALIAS;
-  _value.alias->incrementRef();
   return true;
 }
 
@@ -802,7 +801,6 @@ SGPropertyNode::unalias ()
   if (_type != ALIAS)
     return false;
   _type = NONE;
-  _value.alias->decrementRef();
   _value.alias = 0;
   return true;
 }
@@ -914,10 +912,10 @@ SGPropertyNode::getChildren (const char * name) const
 
 
 /**
- * Detach a child node from the tree and return a guarded pointer to it.
+ * Remove a child node
  */
 SGPropertyNode_ptr 
-SGPropertyNode::detachChild (const char * name, int index, bool keep)
+SGPropertyNode::removeChild (const char * name, int index, bool keep)
 {
   SGPropertyNode_ptr ret;
   int pos = find_child(name, index, _children);
@@ -940,64 +938,6 @@ SGPropertyNode::detachChild (const char * name, int index, bool keep)
 }
 
 
-/**
- * Remove a child node, and all children that aren't referenced.
- * Returns "true" if the node and all subnodes could be removed.
- */
-bool
-SGPropertyNode::removeChild (const char * name, int index)
-{
-  int pos = find_child(name, index, _children);
-  if (pos >= 0) {
-    vector<SGPropertyNode_ptr>::iterator it = _children.begin();
-    it += pos;
-    SGPropertyNode *node = _children[pos];
-    if (node->_count != 1 || node->isTied() || !node->removeChildren())
-      return false;
-
-    if (_path_cache)
-      _path_cache->erase(name); // EMH - TODO: Take "index" into account!
-
-    node->setAttribute(REMOVED, true);
-    node->clearValue();
-    fireChildRemoved(node);
-    _children.erase(it);
-  }
-  return true;
-}
-
-
-/**
- * Remove all children nodes, or all with a given name.
- * Returns "true" if the node and all subnodes could be removed.
- */
-bool
-SGPropertyNode::removeChildren(const char *name)
-{
-  bool success = true;
-  vector<SGPropertyNode_ptr>::iterator it = _children.end();
-  vector<SGPropertyNode_ptr>::iterator begin = _children.begin();
-  while (it-- != begin) {
-    SGPropertyNode *node = *it;
-    if (name && !compare_strings(node->getName(), name))
-      continue;
-
-    if (node->_count != 1 || node->isTied() || !node->removeChildren())
-      success = false;
-    else {
-      if (_path_cache)
-        _path_cache->erase(node->getName());
-
-      node->setAttribute(REMOVED, true);
-      node->clearValue();
-      fireChildRemoved(node);
-      _children.erase(it);
-    }
-  }
-  return success;
-}
-
-
 const char *
 SGPropertyNode::getDisplayName (bool simplify) const
 {
index 092fc224d3ace2d15174353f55348fc4335ed6e6..9ce7df4bf52524d315366884ae72b97b292da427 100644 (file)
@@ -707,27 +707,12 @@ public:
 
 
   /**
-   * Detach a child node from the tree and return guarded pointr to it.
+   * Remove a child node
    */
-  SGPropertyNode_ptr detachChild (const char * name, int index = 0,
+  SGPropertyNode_ptr removeChild (const char * name, int index = 0,
                                   bool keep = true);
 
 
-  /**
-   * Remove a child node. Returns "true" if the node and all subnodes could
-   * be removed, and "false" if at least one node had to remain, because it
-   * was tied, aliased, or refcounted through SGPropertyNode_ptr.
-   */
-  bool removeChild (const char * name, int index = 0);
-
-
-  /**
-   * Remove all children nodes, or all with a given name. True if all nodes
-   * were removed.
-   */
-  bool removeChildren(const char * name = 0);
-
-
   //
   // Alias support.
   //