[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