Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jun 6, 2015, 4:38:45 PM (9 years ago)
Author:
landauf
Message:

use CoreStaticInitializationHandler to initialize core instances

Location:
code/branches/core7/src/libraries/core
Files:
1 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • code/branches/core7/src/libraries/core/Core.cc

    r10531 r10532  
    7878#include "object/ObjectList.h"
    7979#include "module/ModuleInstance.h"
     80#include "module/StaticInitializationManager.h"
     81#include "CoreStaticInitializationHandler.h"
    8082#include "UpdateListener.h"
    8183
     
    111113        , graphicsScope_(NULL)
    112114        , bGraphicsLoaded_(false)
     115        , staticInitHandler_(NULL)
    113116        , rootModule_(NULL)
    114117        , config_(NULL)
     
    124127
    125128        // TODO: initialize StaticInitializationManager
     129        this->staticInitHandler_ = new CoreStaticInitializationHandler();
     130        StaticInitializationManager::getInstance().addHandler(this->staticInitHandler_);
     131
    126132        // TODO: initialize Root-Context
    127133        // TODO: initialize IdentifierManager here
     
    250256            this->rootModule_->deleteAllStaticallyInitializedInstances();
    251257        }
     258        if (this->staticInitHandler_)
     259            StaticInitializationManager::getInstance().removeHandler(this->staticInitHandler_);
    252260        Context::setRootContext(NULL);
    253261        safeObjectDelete(&rootModule_);
     262        safeObjectDelete(&staticInitHandler_);
    254263        safeObjectDelete(&dynLibManager_);
    255264        safeObjectDelete(&configurablePaths_);
     
    288297        DynLib* dynLib = this->dynLibManager_->load(module->getName());
    289298        module->setDynLib(dynLib);
    290         module->loadAllStaticallyInitializedInstances(0);
    291         IdentifierManager::getInstance().createClassHierarchy();
    292         ScopeManager::getInstance().updateListeners();
     299
     300        StaticInitializationManager::getInstance().loadModule(module);
    293301    }
    294302
     
    308316        orxout(internal_info) << "Unloading module " << module->getName() << "..." << endl;
    309317
    310         module->unloadAllStaticallyInitializedInstances(0);
     318        StaticInitializationManager::getInstance().unloadModule(module);
     319
    311320        module->deleteAllStaticallyInitializedInstances();
    312321        this->dynLibManager_->unload(module->getDynLib());
  • code/branches/core7/src/libraries/core/Core.h

    r10524 r10532  
    9595            void setThreadAffinity(int limitToCPU);
    9696
    97             ApplicationPaths*         applicationPaths_;
    98             ConfigurablePaths*        configurablePaths_;
    99             DynLibManager*            dynLibManager_;
    100             SignalHandler*            signalHandler_;
    101             ConfigFileManager*        configFileManager_;
    102             Language*                 languageInstance_;
    103             Loader*                   loaderInstance_;
    104             IOConsole*                ioConsole_;
    105             TclBind*                  tclBind_;
    106             TclThreadManager*         tclThreadManager_;
    107             Scope<ScopeID::ROOT>*     rootScope_;
     97            ApplicationPaths*                applicationPaths_;
     98            ConfigurablePaths*               configurablePaths_;
     99            DynLibManager*                   dynLibManager_;
     100            SignalHandler*                   signalHandler_;
     101            ConfigFileManager*               configFileManager_;
     102            Language*                        languageInstance_;
     103            Loader*                          loaderInstance_;
     104            IOConsole*                       ioConsole_;
     105            TclBind*                         tclBind_;
     106            TclThreadManager*                tclThreadManager_;
     107            Scope<ScopeID::ROOT>*            rootScope_;
    108108            // graphical
    109             GraphicsManager*          graphicsManager_;            //!< Interface to OGRE
    110             InputManager*             inputManager_;               //!< Interface to OIS
    111             GUIManager*               guiManager_;                 //!< Interface to GUI
    112             Scope<ScopeID::GRAPHICS>* graphicsScope_;
    113             bool                      bGraphicsLoaded_;
    114             ModuleInstance*           rootModule_;
    115             std::list<ModuleInstance*>modules_;
     109            GraphicsManager*                 graphicsManager_;            //!< Interface to OGRE
     110            InputManager*                    inputManager_;               //!< Interface to OIS
     111            GUIManager*                      guiManager_;                 //!< Interface to GUI
     112            Scope<ScopeID::GRAPHICS>*        graphicsScope_;
     113            bool                             bGraphicsLoaded_;
     114
     115            CoreStaticInitializationHandler* staticInitHandler_;
     116            ModuleInstance*                  rootModule_;
     117            std::list<ModuleInstance*>       modules_;
    116118
    117119            /// Helper object that stores the config values
    118             CoreConfig*               config_;
     120            CoreConfig*                      config_;
    119121
    120122            /// Helper object that executes the surrogate destructor destroy()
    121             DestructionHelper<Core>   destructionHelper_;
     123            DestructionHelper<Core>          destructionHelper_;
    122124
    123             static Core*              singletonPtr_s;
     125            static Core*                     singletonPtr_s;
    124126    };
    125127}
  • code/branches/core7/src/libraries/core/CorePrereqs.h

    r10531 r10532  
    158158    class Core;
    159159    class CoreConfig;
     160    class CoreStaticInitializationHandler;
    160161    class Destroyable;
    161162    class DestroyLaterManager;
  • code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc

    r10531 r10532  
    2929#include "CoreStaticInitializationHandler.h"
    3030
     31#include "module/ModuleInstance.h"
     32#include "class/IdentifierManager.h"
     33#include "singleton/ScopeManager.h"
     34
    3135namespace orxonox
    3236{
     37    void CoreStaticInitializationHandler::setupHandler()
     38    {
     39        // TODO
     40    }
     41
     42    void CoreStaticInitializationHandler::shutdownHandler()
     43    {
     44        // TODO
     45    }
     46
     47    void CoreStaticInitializationHandler::loadModule(ModuleInstance* module)
     48    {
     49        module->loadAllStaticallyInitializedInstances(0);
     50        IdentifierManager::getInstance().createClassHierarchy();
     51        ScopeManager::getInstance().updateListeners();
     52    }
     53
     54    void CoreStaticInitializationHandler::unloadModule(ModuleInstance* module)
     55    {
     56        module->unloadAllStaticallyInitializedInstances(0);
     57    }
    3358}
  • code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.h

    r10531 r10532  
    3939    {
    4040        public:
    41             CoreStaticInitializationHandler() {}
    42             virtual ~CoreStaticInitializationHandler() {}
     41            virtual void setupHandler();
     42            virtual void shutdownHandler();
     43
     44            virtual void loadModule(ModuleInstance* module);
     45            virtual void unloadModule(ModuleInstance* module);
    4346    };
    4447}
  • code/branches/core7/src/libraries/core/module/CMakeLists.txt

    r10531 r10532  
    22  ModuleInstance.cc
    33  StaticallyInitializedInstance.cc
    4   StaticInitializationHandler.cc
    54  StaticInitializationHandlerIncludes.cc
    65  StaticInitializationManager.cc
  • code/branches/core7/src/libraries/core/module/StaticInitializationHandler.h

    r10531 r10532  
    3939            StaticInitializationHandler() {}
    4040            virtual ~StaticInitializationHandler() {}
     41
     42            virtual void setupHandler() = 0;
     43            virtual void shutdownHandler() = 0;
     44
     45            virtual void loadModule(ModuleInstance* module) = 0;
     46            virtual void unloadModule(ModuleInstance* module) = 0;
    4147    };
    4248}
  • code/branches/core7/src/libraries/core/module/StaticInitializationManager.cc

    r10531 r10532  
    2929#include "StaticInitializationManager.h"
    3030
     31#include "StaticInitializationHandler.h"
     32
    3133namespace orxonox
    3234{
     
    4749    }
    4850
    49     void StaticInitializationManager::addCoreHandler()
     51    void StaticInitializationManager::loadModule(ModuleInstance* module)
    5052    {
    51         // TODO
     53        for (std::list<StaticInitializationHandler*>::iterator it = this->handlers_.begin(); it != this->handlers_.end(); ++it)
     54            (*it)->loadModule(module);
     55    }
     56
     57    void StaticInitializationManager::unloadModule(ModuleInstance* module)
     58    {
     59        for (std::list<StaticInitializationHandler*>::iterator it = this->handlers_.begin(); it != this->handlers_.end(); ++it)
     60            (*it)->unloadModule(module);
    5261    }
    5362}
  • code/branches/core7/src/libraries/core/module/StaticInitializationManager.h

    r10531 r10532  
    4949            void removeHandler(StaticInitializationHandler* handler);
    5050
     51            void loadModule(ModuleInstance* module);
     52            void unloadModule(ModuleInstance* module);
     53
    5154        private:
    52             void addCoreHandler();
    53 
    5455            std::list<StaticInitializationHandler*> handlers_;
    5556    };
Note: See TracChangeset for help on using the changeset viewer.