[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