Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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


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/lang
Files:
2 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
Note: See TracChangeset for help on using the changeset viewer.