[Orxonox-commit 5684] r10344 - code/branches/core7/src/libraries/core/module
landauf at orxonox.net
landauf at orxonox.net
Sun Apr 5 17:29:22 CEST 2015
Author: landauf
Date: 2015-04-05 17:29:21 +0200 (Sun, 05 Apr 2015)
New Revision: 10344
Modified:
code/branches/core7/src/libraries/core/module/ModuleInstance.cc
code/branches/core7/src/libraries/core/module/ModuleInstance.h
code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.cc
code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.h
Log:
remove and destroy StaticallyInitializedInstances
Modified: code/branches/core7/src/libraries/core/module/ModuleInstance.cc
===================================================================
--- code/branches/core7/src/libraries/core/module/ModuleInstance.cc 2015-04-04 11:34:39 UTC (rev 10343)
+++ code/branches/core7/src/libraries/core/module/ModuleInstance.cc 2015-04-05 15:29:21 UTC (rev 10344)
@@ -34,6 +34,13 @@
{
ModuleInstance* ModuleInstance::currentModuleInstance_s = NULL;
+ ModuleInstance::~ModuleInstance()
+ {
+ std::list<StaticallyInitializedInstance*> copy(this->staticallyInitializedInstances_);
+ for (std::list<StaticallyInitializedInstance*>::iterator it = this->staticallyInitializedInstances_.begin(); it != this->staticallyInitializedInstances_.end(); ++it)
+ delete (*it);
+ }
+
void ModuleInstance::addStaticallyInitializedInstance(StaticallyInitializedInstance* instance)
{
this->staticallyInitializedInstances_.push_back(instance);
@@ -41,10 +48,15 @@
void ModuleInstance::loadAllStaticallyInitializedInstances()
{
- for (size_t i = 0; i < this->staticallyInitializedInstances_.size(); ++i)
- this->staticallyInitializedInstances_[i]->load();
+ for (std::list<StaticallyInitializedInstance*>::iterator it = this->staticallyInitializedInstances_.begin(); it != this->staticallyInitializedInstances_.end(); ++it)
+ (*it)->load();
}
+ void ModuleInstance::removeStaticallyInitializedInstance(StaticallyInitializedInstance* instance)
+ {
+ this->staticallyInitializedInstances_.remove(instance);
+ }
+
/*static*/ void ModuleInstance::setCurrentModuleInstance(ModuleInstance* instance)
{
ModuleInstance::currentModuleInstance_s = instance;
Modified: code/branches/core7/src/libraries/core/module/ModuleInstance.h
===================================================================
--- code/branches/core7/src/libraries/core/module/ModuleInstance.h 2015-04-04 11:34:39 UTC (rev 10343)
+++ code/branches/core7/src/libraries/core/module/ModuleInstance.h 2015-04-05 15:29:21 UTC (rev 10344)
@@ -31,21 +31,24 @@
#include "core/CorePrereqs.h"
-#include <vector>
+#include <list>
namespace orxonox
{
class _CoreExport ModuleInstance
{
public:
+ ~ModuleInstance();
+
void addStaticallyInitializedInstance(StaticallyInitializedInstance* instance);
void loadAllStaticallyInitializedInstances();
+ void removeStaticallyInitializedInstance(StaticallyInitializedInstance* instance);
static void setCurrentModuleInstance(ModuleInstance* instance);
static ModuleInstance* getCurrentModuleInstance();
private:
- std::vector<StaticallyInitializedInstance*> staticallyInitializedInstances_;
+ std::list<StaticallyInitializedInstance*> staticallyInitializedInstances_;
static ModuleInstance* currentModuleInstance_s;
};
Modified: code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.cc
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.cc 2015-04-04 11:34:39 UTC (rev 10343)
+++ code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.cc 2015-04-05 15:29:21 UTC (rev 10344)
@@ -36,4 +36,9 @@
{
ModuleInstance::getCurrentModuleInstance()->addStaticallyInitializedInstance(this);
}
+
+ StaticallyInitializedInstance::~StaticallyInitializedInstance()
+ {
+ ModuleInstance::getCurrentModuleInstance()->removeStaticallyInitializedInstance(this);
+ }
}
Modified: code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.h
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.h 2015-04-04 11:34:39 UTC (rev 10343)
+++ code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.h 2015-04-05 15:29:21 UTC (rev 10344)
@@ -37,7 +37,7 @@
{
public:
StaticallyInitializedInstance();
- virtual ~StaticallyInitializedInstance() {}
+ virtual ~StaticallyInitializedInstance();
virtual void load() = 0;
};
More information about the Orxonox-commit
mailing list