]> git.mxchange.org Git - simgear.git/blobdiff - simgear/props/PropertyBasedElement.cxx
Update doxgen config and some comments.
[simgear.git] / simgear / props / PropertyBasedElement.cxx
index b1667e8c80623a85ae13a0b5cf7cd5244e261ac4..855829c7769d8ff01e8fadae64b5c1fba51d63d9 100644 (file)
 namespace simgear
 {
 
-  //------------------------------------------------------------------------------
+  //----------------------------------------------------------------------------
   PropertyBasedElement::PropertyBasedElement(SGPropertyNode* node):
     _node(node)
   {
     _node->addChangeListener(this);
   }
 
-  //------------------------------------------------------------------------------
+  //----------------------------------------------------------------------------
   PropertyBasedElement::~PropertyBasedElement()
+  {
+    onDestroy();
+    removeListener();
+  }
+
+  //----------------------------------------------------------------------------
+  void PropertyBasedElement::removeListener()
   {
     _node->removeChangeListener(this);
   }
 
-  //------------------------------------------------------------------------------
-  SGConstPropertyNode_ptr PropertyBasedElement::getProps() const
+  //----------------------------------------------------------------------------
+  void PropertyBasedElement::destroy()
   {
-    return _node;
+    if( !_node )
+      return;
+
+    // TODO check if really not in use anymore
+    if( _node->getParent() )
+      _node->getParent()
+           ->removeChild(_node->getName(), _node->getIndex());
   }
 
-  //------------------------------------------------------------------------------
-  SGPropertyNode_ptr PropertyBasedElement::getProps()
+  //----------------------------------------------------------------------------
+  SGConstPropertyNode_ptr PropertyBasedElement::getProps() const
   {
     return _node;
   }
 
   //----------------------------------------------------------------------------
-  void PropertyBasedElement::setSelf(const PropertyBasedElementPtr& self)
+  SGPropertyNode_ptr PropertyBasedElement::getProps()
   {
-    _self = self;
+    return _node;
   }
 
 } // namespace simgear