Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 31, 2015, 10:56:32 AM (10 years ago)
Author:
landauf
Message:

load modules AFTER core was initialized. load each module with a separate ModuleInstance. unloading is not yet implemented…

File:
1 edited

Legend:

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

    r10404 r10518  
    3535    ModuleInstance* ModuleInstance::currentModuleInstance_s = NULL;
    3636
     37    ModuleInstance::ModuleInstance(const std::string& name)
     38        : name_(name)
     39        , dynLib_(NULL)
     40    {
     41    }
     42
    3743    ModuleInstance::~ModuleInstance()
    3844    {
    39         std::list<StaticallyInitializedInstance*> copy(this->staticallyInitializedInstances_);
    40         for (std::list<StaticallyInitializedInstance*>::iterator it = this->staticallyInitializedInstances_.begin(); it != this->staticallyInitializedInstances_.end(); ++it)
    41             delete (*it);
     45        this->deleteAllStaticallyInitializedInstances();
    4246    }
    4347
    4448    void ModuleInstance::addStaticallyInitializedInstance(StaticallyInitializedInstance* instance)
    4549    {
    46         this->staticallyInitializedInstances_.push_back(instance);
     50        this->staticallyInitializedInstances_.insert(instance);
    4751    }
    4852
    4953    void ModuleInstance::loadAllStaticallyInitializedInstances()
    5054    {
    51         for (std::list<StaticallyInitializedInstance*>::iterator it = this->staticallyInitializedInstances_.begin(); it != this->staticallyInitializedInstances_.end(); ++it)
     55        for (std::set<StaticallyInitializedInstance*>::iterator it = this->staticallyInitializedInstances_.begin(); it != this->staticallyInitializedInstances_.end(); ++it)
    5256            (*it)->load();
    5357    }
     
    5559    void ModuleInstance::unloadAllStaticallyInitializedInstances()
    5660    {
    57         for (std::list<StaticallyInitializedInstance*>::iterator it = this->staticallyInitializedInstances_.begin(); it != this->staticallyInitializedInstances_.end(); ++it)
     61        for (std::set<StaticallyInitializedInstance*>::iterator it = this->staticallyInitializedInstances_.begin(); it != this->staticallyInitializedInstances_.end(); ++it)
    5862            (*it)->unload();
    5963    }
     
    6165    void ModuleInstance::removeStaticallyInitializedInstance(StaticallyInitializedInstance* instance)
    6266    {
    63         this->staticallyInitializedInstances_.remove(instance);
     67        this->staticallyInitializedInstances_.erase(instance);
    6468    }
     69
     70    void ModuleInstance::deleteAllStaticallyInitializedInstances()
     71    {
     72        std::set<StaticallyInitializedInstance*> copy(this->staticallyInitializedInstances_);
     73        this->staticallyInitializedInstances_.clear();
     74        for (std::set<StaticallyInitializedInstance*>::iterator it = this->staticallyInitializedInstances_.begin(); it != this->staticallyInitializedInstances_.end(); ++it)
     75            delete (*it);
     76    }
     77
    6578
    6679    /*static*/ void ModuleInstance::setCurrentModuleInstance(ModuleInstance* instance)
     
    7285    {
    7386        if (!ModuleInstance::currentModuleInstance_s)
    74             ModuleInstance::currentModuleInstance_s = new ModuleInstance();
     87            ModuleInstance::currentModuleInstance_s = new ModuleInstance("");
    7588        return ModuleInstance::currentModuleInstance_s;
    7689    }
Note: See TracChangeset for help on using the changeset viewer.