[Orxonox-commit 4965] r9634 - code/branches/core6/src/libraries/core/class
landauf at orxonox.net
landauf at orxonox.net
Sun Aug 11 14:36:31 CEST 2013
Author: landauf
Date: 2013-08-11 14:36:31 +0200 (Sun, 11 Aug 2013)
New Revision: 9634
Modified:
code/branches/core6/src/libraries/core/class/Identifier.h
code/branches/core6/src/libraries/core/class/IdentifierManager.cc
Log:
reset static maps and variables after destroying identifiers
iterate over the same map in createClassHierarchy() an in destroyAllIdentifiers()
Modified: code/branches/core6/src/libraries/core/class/Identifier.h
===================================================================
--- code/branches/core6/src/libraries/core/class/Identifier.h 2013-08-11 09:02:59 UTC (rev 9633)
+++ code/branches/core6/src/libraries/core/class/Identifier.h 2013-08-11 12:36:31 UTC (rev 9634)
@@ -293,6 +293,7 @@
~ClassIdentifier()
{
SuperFunctionDestruction<0, T>::destroy(this);
+ classIdentifier_s = 0;
}
void updateConfigValues(bool updateChildren, Listable*) const;
Modified: code/branches/core6/src/libraries/core/class/IdentifierManager.cc
===================================================================
--- code/branches/core6/src/libraries/core/class/IdentifierManager.cc 2013-08-11 09:02:59 UTC (rev 9633)
+++ code/branches/core6/src/libraries/core/class/IdentifierManager.cc 2013-08-11 12:36:31 UTC (rev 9634)
@@ -85,7 +85,7 @@
{
orxout(internal_status) << "Create class-hierarchy" << endl;
IdentifierManager::startCreatingHierarchy();
- for (std::map<std::string, Identifier*>::const_iterator it = IdentifierManager::getStringIdentifierMap().begin(); it != IdentifierManager::getStringIdentifierMap().end(); ++it)
+ for (std::map<std::string, Identifier*>::const_iterator it = IdentifierManager::getTypeIDIdentifierMap().begin(); it != IdentifierManager::getTypeIDIdentifierMap().end(); ++it)
{
// To create the new branch of the class-hierarchy, we create a new object and delete it afterwards.
if (it->second->hasFactory())
@@ -105,6 +105,11 @@
{
for (std::map<std::string, Identifier*>::iterator it = IdentifierManager::getTypeIDIdentifierMap().begin(); it != IdentifierManager::getTypeIDIdentifierMap().end(); ++it)
delete (it->second);
+
+ IdentifierManager::getTypeIDIdentifierMap().clear();
+ IdentifierManager::getStringIdentifierMapIntern().clear();
+ IdentifierManager::getLowercaseStringIdentifierMapIntern().clear();
+ IdentifierManager::getIDIdentifierMapIntern().clear();
}
/**
More information about the Orxonox-commit
mailing list