[Orxonox-commit 5866] r10526 - code/branches/core7/src/libraries/core/class

landauf at orxonox.net landauf at orxonox.net
Sat Jun 6 10:37:40 CEST 2015


Author: landauf
Date: 2015-06-06 10:37:40 +0200 (Sat, 06 Jun 2015)
New Revision: 10526

Modified:
   code/branches/core7/src/libraries/core/class/Identifier.cc
Log:
identifier removes itself from all related identifiers when being destroyed

Modified: code/branches/core7/src/libraries/core/class/Identifier.cc
===================================================================
--- code/branches/core7/src/libraries/core/class/Identifier.cc	2015-06-04 21:09:40 UTC (rev 10525)
+++ code/branches/core7/src/libraries/core/class/Identifier.cc	2015-06-06 08:37:40 UTC (rev 10526)
@@ -81,6 +81,16 @@
         for (std::list<const InheritsFrom*>::const_iterator it = this->manualDirectParents_.begin(); it != this->manualDirectParents_.end(); ++it)
             delete (*it);
 
+        // erase this Identifier from all related identifiers
+        for (std::list<const Identifier*>::const_iterator it = this->parents_.begin(); it != this->parents_.end(); ++it)
+            const_cast<Identifier*>(*it)->children_.erase(this);
+        for (std::list<const Identifier*>::const_iterator it = this->directParents_.begin(); it != this->directParents_.end(); ++it)
+            const_cast<Identifier*>(*it)->directChildren_.erase(this);
+        for (std::set<const Identifier*>::const_iterator it = this->children_.begin(); it != this->children_.end(); ++it)
+            const_cast<Identifier*>(*it)->parents_.remove(this);
+        for (std::set<const Identifier*>::const_iterator it = this->directChildren_.begin(); it != this->directChildren_.end(); ++it)
+            const_cast<Identifier*>(*it)->directParents_.remove(this);
+
         for (std::map<std::string, ConfigValueContainer*>::iterator it = this->configValues_.begin(); it != this->configValues_.end(); ++it)
             delete (it->second);
         for (std::map<std::string, XMLPortParamContainer*>::iterator it = this->xmlportParamContainers_.begin(); it != this->xmlportParamContainers_.end(); ++it)




More information about the Orxonox-commit mailing list