Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

statically initialized instances may contain a type. currently not used.

File:
1 edited

Legend:

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

    r10521 r10530  
    4848    void ModuleInstance::addStaticallyInitializedInstance(StaticallyInitializedInstance* instance)
    4949    {
    50         this->staticallyInitializedInstances_.insert(instance);
    51     }
    52 
    53     void ModuleInstance::loadAllStaticallyInitializedInstances()
    54     {
    55         for (std::set<StaticallyInitializedInstance*>::iterator it = this->staticallyInitializedInstances_.begin(); it != this->staticallyInitializedInstances_.end(); ++it)
    56             (*it)->load();
    57     }
    58 
    59     void ModuleInstance::unloadAllStaticallyInitializedInstances()
    60     {
    61         for (std::set<StaticallyInitializedInstance*>::iterator it = this->staticallyInitializedInstances_.begin(); it != this->staticallyInitializedInstances_.end(); ++it)
    62             (*it)->unload();
     50        this->staticallyInitializedInstancesByType_[instance->getType()].insert(instance);
    6351    }
    6452
    6553    void ModuleInstance::removeStaticallyInitializedInstance(StaticallyInitializedInstance* instance)
    6654    {
    67         this->staticallyInitializedInstances_.erase(instance);
     55        this->staticallyInitializedInstancesByType_[instance->getType()].erase(instance);
     56    }
     57
     58    void ModuleInstance::loadAllStaticallyInitializedInstances(StaticallyInitializedInstance::Type type)
     59    {
     60        const std::set<StaticallyInitializedInstance*>& instances = this->staticallyInitializedInstancesByType_[type];
     61        for (std::set<StaticallyInitializedInstance*>::iterator it = instances.begin(); it != instances.end(); ++it)
     62            (*it)->load();
     63    }
     64
     65    void ModuleInstance::unloadAllStaticallyInitializedInstances(StaticallyInitializedInstance::Type type)
     66    {
     67        const std::set<StaticallyInitializedInstance*>& instances = this->staticallyInitializedInstancesByType_[type];
     68        for (std::set<StaticallyInitializedInstance*>::iterator it = instances.begin(); it != instances.end(); ++it)
     69            (*it)->unload();
    6870    }
    6971
    7072    void ModuleInstance::deleteAllStaticallyInitializedInstances()
    7173    {
    72         std::set<StaticallyInitializedInstance*> copy(this->staticallyInitializedInstances_);
    73         this->staticallyInitializedInstances_.clear();
    74         for (std::set<StaticallyInitializedInstance*>::iterator it = copy.begin(); it != copy.end(); ++it)
    75             delete (*it);
     74        std::map<StaticallyInitializedInstance::Type, std::set<StaticallyInitializedInstance*> > copy(this->staticallyInitializedInstancesByType_);
     75        this->staticallyInitializedInstancesByType_.clear();
     76        for (std::map<StaticallyInitializedInstance::Type, std::set<StaticallyInitializedInstance*> >::iterator it1 = copy.begin(); it1 != copy.end(); ++it1)
     77            for (std::set<StaticallyInitializedInstance*>::iterator it2 = it1->second.begin(); it2 != it1->second.end(); ++it2)
     78                delete (*it2);
    7679    }
    7780
Note: See TracChangeset for help on using the changeset viewer.