Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 4936 in orxonox.OLD for orxonox/trunk/src/util/object_manager.h


Ignore:
Timestamp:
Jul 22, 2005, 7:30:49 PM (20 years ago)
Author:
bensch
Message:

orxonox/trunk: FastFactory: gets flushed now → devMail is withdrawn now.
Also reimplemented much stuff, so it now works most out of the BaseClass. → still some minor stuff to fix.
GarbageCollector, i will come to you soon …

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orxonox/trunk/src/util/object_manager.h

    r4935 r4936  
    5656    void kill(ClassID classID, BaseObject* object);
    5757
     58    virtual void fabricate() = NULL;
    5859    // retrival functions for fast Ineraction
    5960    //FastFactory* getFastFactory(ClassID classID);
     61
     62    static void flushAll(bool hardFLUSH = false);
     63    void flush(bool hardFLUSH = false);
    6064
    6165    /** @returns the first FastFactory */
     
    102106
    103107    T* resurect();
    104     void kill(T* object);
    105 
    106108  private:
    107109    tFastFactory(ClassID classID, const char* fastFactoryName);
    108110
    109     T* fabricate();
     111    virtual void fabricate();
    110112
    111113  private:
     
    142144
    143145template<class T>
    144     T* tFastFactory<T>::fabricate()
     146    void tFastFactory<T>::fabricate()
    145147{
    146148  FastObjectMember* tmpFirstDead = new FastObjectMember;
    147   T* fabricatedT = new T();
    148   tmpFirstDead->objectPointer = fabricatedT;
     149  tmpFirstDead->objectPointer = new T();
    149150  tmpFirstDead->next = this->deadList;
    150151  ++this->storedDeadObjects;
    151152
    152153  this->deadList = tmpFirstDead;
    153   return fabricatedT;
    154154}
    155155
     
    175175    PRINTF(2)("The deadList of Class %s is empty, this may be either because it has not been filled yet, or the cache is to small.\n" \
    176176        "Fabricating a new %s", this->getName(), this->getName());
    177     return this->fabricate();
     177    this->fabricate();
     178    return resurect();
    178179  }
    179180  else
     
    187188    return dynamic_cast<T*>(tmpC->objectPointer);
    188189  }
    189 }
    190 
    191 template<class T>
    192     void tFastFactory<T>::kill(T* object)
    193 {
    194   FastObjectMember* tmpC;
    195   if (unlikely(this->unusedContainers == NULL))
    196   {
    197     tmpC = new FastObjectMember;
    198   }
    199   else
    200   {
    201     tmpC = this->unusedContainers;
    202     this->unusedContainers = this->unusedContainers->next;
    203   }
    204 
    205   tmpC->next = this->deadList;
    206   tmpC->objectPointer = object;
    207190}
    208191
Note: See TracChangeset for help on using the changeset viewer.