[Orxonox-commit 5872] r10532 - in code/branches/core7/src/libraries/core: . module
landauf at orxonox.net
landauf at orxonox.net
Sat Jun 6 16:38:45 CEST 2015
Author: landauf
Date: 2015-06-06 16:38:45 +0200 (Sat, 06 Jun 2015)
New Revision: 10532
Removed:
code/branches/core7/src/libraries/core/module/StaticInitializationHandler.cc
Modified:
code/branches/core7/src/libraries/core/Core.cc
code/branches/core7/src/libraries/core/Core.h
code/branches/core7/src/libraries/core/CorePrereqs.h
code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc
code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.h
code/branches/core7/src/libraries/core/module/CMakeLists.txt
code/branches/core7/src/libraries/core/module/StaticInitializationHandler.h
code/branches/core7/src/libraries/core/module/StaticInitializationManager.cc
code/branches/core7/src/libraries/core/module/StaticInitializationManager.h
Log:
use CoreStaticInitializationHandler to initialize core instances
Modified: code/branches/core7/src/libraries/core/Core.cc
===================================================================
--- code/branches/core7/src/libraries/core/Core.cc 2015-06-06 13:56:39 UTC (rev 10531)
+++ code/branches/core7/src/libraries/core/Core.cc 2015-06-06 14:38:45 UTC (rev 10532)
@@ -77,6 +77,8 @@
#include "input/InputManager.h"
#include "object/ObjectList.h"
#include "module/ModuleInstance.h"
+#include "module/StaticInitializationManager.h"
+#include "CoreStaticInitializationHandler.h"
#include "UpdateListener.h"
namespace orxonox
@@ -110,6 +112,7 @@
, guiManager_(NULL)
, graphicsScope_(NULL)
, bGraphicsLoaded_(false)
+ , staticInitHandler_(NULL)
, rootModule_(NULL)
, config_(NULL)
, destructionHelper_(this)
@@ -123,6 +126,9 @@
this->dynLibManager_ = new DynLibManager();
// TODO: initialize StaticInitializationManager
+ this->staticInitHandler_ = new CoreStaticInitializationHandler();
+ StaticInitializationManager::getInstance().addHandler(this->staticInitHandler_);
+
// TODO: initialize Root-Context
// TODO: initialize IdentifierManager here
// TODO: initialize ScopeManager here
@@ -249,8 +255,11 @@
this->rootModule_->unloadAllStaticallyInitializedInstances(0);
this->rootModule_->deleteAllStaticallyInitializedInstances();
}
+ if (this->staticInitHandler_)
+ StaticInitializationManager::getInstance().removeHandler(this->staticInitHandler_);
Context::setRootContext(NULL);
safeObjectDelete(&rootModule_);
+ safeObjectDelete(&staticInitHandler_);
safeObjectDelete(&dynLibManager_);
safeObjectDelete(&configurablePaths_);
safeObjectDelete(&applicationPaths_);
@@ -287,9 +296,8 @@
ModuleInstance::setCurrentModuleInstance(module);
DynLib* dynLib = this->dynLibManager_->load(module->getName());
module->setDynLib(dynLib);
- module->loadAllStaticallyInitializedInstances(0);
- IdentifierManager::getInstance().createClassHierarchy();
- ScopeManager::getInstance().updateListeners();
+
+ StaticInitializationManager::getInstance().loadModule(module);
}
void Core::unloadModules()
@@ -307,7 +315,8 @@
{
orxout(internal_info) << "Unloading module " << module->getName() << "..." << endl;
- module->unloadAllStaticallyInitializedInstances(0);
+ StaticInitializationManager::getInstance().unloadModule(module);
+
module->deleteAllStaticallyInitializedInstances();
this->dynLibManager_->unload(module->getDynLib());
module->setDynLib(NULL);
Modified: code/branches/core7/src/libraries/core/Core.h
===================================================================
--- code/branches/core7/src/libraries/core/Core.h 2015-06-06 13:56:39 UTC (rev 10531)
+++ code/branches/core7/src/libraries/core/Core.h 2015-06-06 14:38:45 UTC (rev 10532)
@@ -94,33 +94,35 @@
void setThreadAffinity(int limitToCPU);
- ApplicationPaths* applicationPaths_;
- ConfigurablePaths* configurablePaths_;
- DynLibManager* dynLibManager_;
- SignalHandler* signalHandler_;
- ConfigFileManager* configFileManager_;
- Language* languageInstance_;
- Loader* loaderInstance_;
- IOConsole* ioConsole_;
- TclBind* tclBind_;
- TclThreadManager* tclThreadManager_;
- Scope<ScopeID::ROOT>* rootScope_;
+ ApplicationPaths* applicationPaths_;
+ ConfigurablePaths* configurablePaths_;
+ DynLibManager* dynLibManager_;
+ SignalHandler* signalHandler_;
+ ConfigFileManager* configFileManager_;
+ Language* languageInstance_;
+ Loader* loaderInstance_;
+ IOConsole* ioConsole_;
+ TclBind* tclBind_;
+ TclThreadManager* tclThreadManager_;
+ Scope<ScopeID::ROOT>* rootScope_;
// graphical
- GraphicsManager* graphicsManager_; //!< Interface to OGRE
- InputManager* inputManager_; //!< Interface to OIS
- GUIManager* guiManager_; //!< Interface to GUI
- Scope<ScopeID::GRAPHICS>* graphicsScope_;
- bool bGraphicsLoaded_;
- ModuleInstance* rootModule_;
- std::list<ModuleInstance*>modules_;
+ GraphicsManager* graphicsManager_; //!< Interface to OGRE
+ InputManager* inputManager_; //!< Interface to OIS
+ GUIManager* guiManager_; //!< Interface to GUI
+ Scope<ScopeID::GRAPHICS>* graphicsScope_;
+ bool bGraphicsLoaded_;
+ CoreStaticInitializationHandler* staticInitHandler_;
+ ModuleInstance* rootModule_;
+ std::list<ModuleInstance*> modules_;
+
/// Helper object that stores the config values
- CoreConfig* config_;
+ CoreConfig* config_;
/// Helper object that executes the surrogate destructor destroy()
- DestructionHelper<Core> destructionHelper_;
+ DestructionHelper<Core> destructionHelper_;
- static Core* singletonPtr_s;
+ static Core* singletonPtr_s;
};
}
Modified: code/branches/core7/src/libraries/core/CorePrereqs.h
===================================================================
--- code/branches/core7/src/libraries/core/CorePrereqs.h 2015-06-06 13:56:39 UTC (rev 10531)
+++ code/branches/core7/src/libraries/core/CorePrereqs.h 2015-06-06 14:38:45 UTC (rev 10532)
@@ -157,6 +157,7 @@
class Context;
class Core;
class CoreConfig;
+ class CoreStaticInitializationHandler;
class Destroyable;
class DestroyLaterManager;
class DestructionListener;
Modified: code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc
===================================================================
--- code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc 2015-06-06 13:56:39 UTC (rev 10531)
+++ code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc 2015-06-06 14:38:45 UTC (rev 10532)
@@ -28,6 +28,31 @@
#include "CoreStaticInitializationHandler.h"
+#include "module/ModuleInstance.h"
+#include "class/IdentifierManager.h"
+#include "singleton/ScopeManager.h"
+
namespace orxonox
{
+ void CoreStaticInitializationHandler::setupHandler()
+ {
+ // TODO
+ }
+
+ void CoreStaticInitializationHandler::shutdownHandler()
+ {
+ // TODO
+ }
+
+ void CoreStaticInitializationHandler::loadModule(ModuleInstance* module)
+ {
+ module->loadAllStaticallyInitializedInstances(0);
+ IdentifierManager::getInstance().createClassHierarchy();
+ ScopeManager::getInstance().updateListeners();
+ }
+
+ void CoreStaticInitializationHandler::unloadModule(ModuleInstance* module)
+ {
+ module->unloadAllStaticallyInitializedInstances(0);
+ }
}
Modified: code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.h
===================================================================
--- code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.h 2015-06-06 13:56:39 UTC (rev 10531)
+++ code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.h 2015-06-06 14:38:45 UTC (rev 10532)
@@ -38,8 +38,11 @@
class _CoreExport CoreStaticInitializationHandler : public StaticInitializationHandler
{
public:
- CoreStaticInitializationHandler() {}
- virtual ~CoreStaticInitializationHandler() {}
+ virtual void setupHandler();
+ virtual void shutdownHandler();
+
+ virtual void loadModule(ModuleInstance* module);
+ virtual void unloadModule(ModuleInstance* module);
};
}
Modified: code/branches/core7/src/libraries/core/module/CMakeLists.txt
===================================================================
--- code/branches/core7/src/libraries/core/module/CMakeLists.txt 2015-06-06 13:56:39 UTC (rev 10531)
+++ code/branches/core7/src/libraries/core/module/CMakeLists.txt 2015-06-06 14:38:45 UTC (rev 10532)
@@ -1,7 +1,6 @@
ADD_SOURCE_FILES(CORE_SRC_FILES
ModuleInstance.cc
StaticallyInitializedInstance.cc
- StaticInitializationHandler.cc
StaticInitializationHandlerIncludes.cc
StaticInitializationManager.cc
)
Deleted: code/branches/core7/src/libraries/core/module/StaticInitializationHandler.cc
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticInitializationHandler.cc 2015-06-06 13:56:39 UTC (rev 10531)
+++ code/branches/core7/src/libraries/core/module/StaticInitializationHandler.cc 2015-06-06 14:38:45 UTC (rev 10532)
@@ -1,33 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Fabian 'x3n' Landau
- * Co-authors:
- * ...
- *
- */
-
-#include "StaticInitializationHandler.h"
-
-namespace orxonox
-{
-}
Modified: code/branches/core7/src/libraries/core/module/StaticInitializationHandler.h
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticInitializationHandler.h 2015-06-06 13:56:39 UTC (rev 10531)
+++ code/branches/core7/src/libraries/core/module/StaticInitializationHandler.h 2015-06-06 14:38:45 UTC (rev 10532)
@@ -38,6 +38,12 @@
public:
StaticInitializationHandler() {}
virtual ~StaticInitializationHandler() {}
+
+ virtual void setupHandler() = 0;
+ virtual void shutdownHandler() = 0;
+
+ virtual void loadModule(ModuleInstance* module) = 0;
+ virtual void unloadModule(ModuleInstance* module) = 0;
};
}
Modified: code/branches/core7/src/libraries/core/module/StaticInitializationManager.cc
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticInitializationManager.cc 2015-06-06 13:56:39 UTC (rev 10531)
+++ code/branches/core7/src/libraries/core/module/StaticInitializationManager.cc 2015-06-06 14:38:45 UTC (rev 10532)
@@ -28,6 +28,8 @@
#include "StaticInitializationManager.h"
+#include "StaticInitializationHandler.h"
+
namespace orxonox
{
/* static */ StaticInitializationManager& StaticInitializationManager::getInstance()
@@ -46,8 +48,15 @@
this->handlers_.remove(handler);
}
- void StaticInitializationManager::addCoreHandler()
+ void StaticInitializationManager::loadModule(ModuleInstance* module)
{
- // TODO
+ for (std::list<StaticInitializationHandler*>::iterator it = this->handlers_.begin(); it != this->handlers_.end(); ++it)
+ (*it)->loadModule(module);
}
+
+ void StaticInitializationManager::unloadModule(ModuleInstance* module)
+ {
+ for (std::list<StaticInitializationHandler*>::iterator it = this->handlers_.begin(); it != this->handlers_.end(); ++it)
+ (*it)->unloadModule(module);
+ }
}
Modified: code/branches/core7/src/libraries/core/module/StaticInitializationManager.h
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticInitializationManager.h 2015-06-06 13:56:39 UTC (rev 10531)
+++ code/branches/core7/src/libraries/core/module/StaticInitializationManager.h 2015-06-06 14:38:45 UTC (rev 10532)
@@ -48,9 +48,10 @@
void addHandler(StaticInitializationHandler* handler);
void removeHandler(StaticInitializationHandler* handler);
+ void loadModule(ModuleInstance* module);
+ void unloadModule(ModuleInstance* module);
+
private:
- void addCoreHandler();
-
std::list<StaticInitializationHandler*> handlers_;
};
}
More information about the Orxonox-commit
mailing list