Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 5103 in orxonox.OLD for trunk/src/lib


Ignore:
Timestamp:
Aug 22, 2005, 6:08:15 PM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: better algorithm to find the ClassName.
Now this is done via the ClassList

Location:
trunk/src/lib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/lang/class_list.cc

    r5102 r5103  
    4848{
    4949  delete this->objectList;
     50  if(ClassList::classList != NULL)
     51  {
     52    delete ClassList::classList;
     53    ClassList::classList = NULL;
     54  }
    5055  --ClassList::classCount;
    5156}
     
    5661//! the Count of classes
    5762unsigned int ClassList::classCount = 0;
     63
     64//! a List of all strings of all classes, that have registered so far.
     65tList<const char>* ClassList::classList = NULL;
    5866
    5967/**
     
    107115    tmp = tmp->next;
    108116  }
     117}
     118
     119/**
     120 * grabs the names of all Classes, and injects it into a List of const chars
     121 * @return the generated List
     122 *
     123 * This function first looks, if the List has been changed (by the ListSize)
     124 * befor it changes anything.
     125 */
     126const tList<const char>* ClassList::getClassList()
     127{
     128  if (unlikely(ClassList::classList != NULL && ClassList::classList->getSize() != ClassList::classCount))
     129  {
     130    delete ClassList::classList;
     131    ClassList::classList = NULL;
     132  }
     133  if (unlikely(ClassList::classList == NULL))
     134    ClassList::classList = new tList<const char>;
     135
     136  if(likely(ClassList::first != NULL))
     137  {
     138    ClassList* tmpCL = ClassList::first;
     139    while (likely(tmpCL != NULL))
     140    {
     141      ClassList::classList->add(tmpCL->className);
     142      tmpCL = tmpCL->next;
     143    }
     144  }
     145  return ClassList::classList;
    109146}
    110147
  • trunk/src/lib/lang/class_list.h

    r5102 r5103  
    3535
    3636    // STATIC FUNCTIONS
    37     static void               addToClassList(BaseObject* objectPointer, const long& classID, const char* className);
    38     static void               removeFromClassList(BaseObject* objectPointer);
     37    static void                     addToClassList(BaseObject* objectPointer, const long& classID, const char* className);
     38    static void                     removeFromClassList(BaseObject* objectPointer);
    3939
    40     static tList<BaseObject>* getList(long classID = CL_NULL);
    41     static tList<BaseObject>* getList(const char* className);
    42     static BaseObject*        getObject(const char* name, long classID = CL_NULL);
    43     static bool               exists(const BaseObject* object, long classID = CL_NULL);
     40    static tList<BaseObject>*       getList(long classID = CL_NULL);
     41    static tList<BaseObject>*       getList(const char* className);
     42    static const tList<const char>* getClassList();
     43    static BaseObject*              getObject(const char* name, long classID = CL_NULL);
     44    static bool                     exists(const BaseObject* object, long classID = CL_NULL);
    4445
    45     static void               whatIs(const BaseObject* object);
    46     static void debug(unsigned int debugLevel = 0, long classID = CL_NULL);
     46    static void                     whatIs(const BaseObject* object);
     47    static void                     debug(unsigned int debugLevel = 0, long classID = CL_NULL);
    4748
    4849  private:
    49     tList<BaseObject>*       objectList;             //!< A list of Objects belonging to this Class
     50    tList<BaseObject>*              objectList;             //!< A list of Objects belonging to this Class
    5051
    51     long                     classID;                //!< ClassID stored in this ClassList \see ClassID
    52     const char*              className;              //!< Name of the Class Stored here
     52    long                            classID;                //!< ClassID stored in this ClassList \see ClassID
     53    const char*                     className;              //!< Name of the Class Stored here
    5354
    54     ClassList*               next;                   //!< Pointer to the next class in the List
     55    ClassList*                      next;                   //!< Pointer to the next class in the List
    5556
    5657    // STATIC MEMBERS
    57     static ClassList*        first;                  //!< The first Class in the List
    58     static unsigned int      classCount;             //!< The Count of classes that have been registered (should match the lower description)
     58    static ClassList*               first;                  //!< The first Class in the List
     59    static tList<const char>*       classList;              //!< a List of all Names of all classes, that have registered so far.
     60    static unsigned int             classCount;             //!< The Count of classes that have been registered (should match the lower description)
    5961};
    6062
  • trunk/src/lib/util/list.h

    r5076 r5103  
    135135  void removeLast();
    136136  void flush();
    137   T* firstElement();
    138   T* lastElement();
    139   bool isEmpty();
    140   unsigned int getSize();
     137  T* firstElement() const;
     138  T* lastElement() const;
     139  bool isEmpty() const;
     140  unsigned int getSize() const;
    141141  bool inList(T* entity);
    142   tIterator<T>* getIterator();
     142  tIterator<T>* getIterator() const;
    143143  T* nextElement(T* toEntity);
    144144  T* toArray();
     
    303303*/
    304304template<class T>
    305 inline T* tList<T>::firstElement()
     305inline T* tList<T>::firstElement() const
    306306{
    307307  return this->first->curr;
     
    314314*/
    315315template<class T>
    316 inline T* tList<T>::lastElement()
     316inline T* tList<T>::lastElement() const
    317317{
    318318  return this->last->curr;
     
    325325*/
    326326template<class T>
    327 inline bool tList<T>::isEmpty()
     327inline bool tList<T>::isEmpty() const
    328328{
    329329  return (this->size==0)?true:false;
     
    359359*/
    360360template<class T>
    361 inline unsigned int tList<T>::getSize()
     361inline unsigned int tList<T>::getSize() const
    362362{
    363363  return this->size;
     
    372372*/
    373373template<class T>
    374 inline tIterator<T>* tList<T>::getIterator()
     374inline tIterator<T>* tList<T>::getIterator() const
    375375{
    376376  tIterator<T>* iterator = new tIterator<T>(this->first);
Note: See TracChangeset for help on using the changeset viewer.