]> git.mxchange.org Git - simgear.git/commit
Melchior FRANZ:
authorehofman <ehofman>
Mon, 27 Jun 2005 13:49:28 +0000 (13:49 +0000)
committerehofman <ehofman>
Mon, 27 Jun 2005 13:49:28 +0000 (13:49 +0000)
commit24f908d9be3b6db5fe56e0071917ae9a42df3d46
treef446d3afa8bea76335f355ecd98667e59324ba9b
parentf62ff0ad66383ad0416a60337827098f48522664
Melchior FRANZ:

- introduce removeChildren() and removeChildren(name)  to remove all children
  or all with a given name
- let removeChild() and removeChildren() also remove child trees, and let them
  return a "dirty" boolean that indicates if one or more subnodes had to be
  kept because of refcounting (removeChild returned a SGPropertyNode_ptr before)
- make alias/unalias increase/decrease the refcounter
- don't remove refcounted or tied nodes

This patch makes the SGPropertyNode_ptr actually useful. Until today, they did
proper refcounting (except for aliases), but no other part did check this counter.

But SGPropertyNode_ptr aren't only useful for the first time, they are now
highly recommended for every place that relies on a node address, and wants
to "lock" it (so that removeChild(ren) will never try to remove them). This
is not guaranteed for SGPropertyNode* (and never was). Of course, that's not
an imminent problem, as only four places currently use removeChild(ren) and
these are careful to only remove their own data.
simgear/props/props.cxx
simgear/props/props.hxx