Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/lang/class_list.h @ 5373

Last change on this file since 5373 was 5331, checked in by bensch, 19 years ago

orxonox/trunk: inition is our motto, so now the debug function of the ClassList really looks greate and is easy to use.

File size: 2.8 KB
Line 
1/*!
2 * @file class_list.h
3  *  Definition of the Class List, that handles a Class-Specific-Control structure
4
5 */
6
7#ifndef _CLASS_LIST_H
8#define _CLASS_LIST_H
9
10#include "class_id.h"
11
12// FORWARD DEFINITION
13class BaseObject;
14template<class T> class tList;
15
16
17//! A class that handles Pointers to Objects of all type.
18/**
19 * here all the Pointers to all the Object of orxonox are stored, that implement BaseObject
20 * for now.
21 * You can get Any Object's Reference to BaseObject with dynamic_cast<T>(ClassList::getObject(name, CL_T_NAME));
22 *  where: T: is the Class to cast to,
23 *   name: the name of the Object (not className)
24 *   CL_T_NAME: the class Identifier, (if CL_NULL or nothing it will take longer, because all BaseObject's are searched through)
25 *
26 * There is also the exists-function, that just checks, if a Reference is still in existence.
27 *
28 * @see ClassID, BaseObject, dynamic_cast
29 */
30class ClassList {
31
32  public:
33    ClassList(const long& classID, const char* className);
34    virtual ~ClassList();
35
36    // STATIC FUNCTIONS
37    static void                     addToClassList(BaseObject* objectPointer, const long& classID, const char* className);
38    static void                     removeFromClassList(BaseObject* objectPointer);
39
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);
45
46    static void                     whatIs(const BaseObject* object);
47
48    static const char*              IDToString(long classID = CL_NULL);
49    static long                     StringToID(const char* className);
50    static void                     debug(unsigned int debugLevel = 0, long classID = CL_NULL);
51    static void                     debugS(const char* className = 0x0, unsigned int debugLevel = 0);
52
53
54  private:
55    tList<BaseObject>*              objectList;             //!< A list of Objects belonging to this Class
56
57    long                            classID;                //!< ClassID stored in this ClassList \see ClassID
58    const char*                     className;              //!< Name of the Class Stored here
59
60    ClassList*                      next;                   //!< Pointer to the next class in the List
61
62    // STATIC MEMBERS
63    static ClassList*               first;                  //!< The first Class in the List
64    static tList<const char>*       classList;              //!< a List of all Names of all classes, that have registered so far.
65    static unsigned int             classCount;             //!< The Count of classes that have been registered (should match the lower description)
66};
67
68#endif /* _CLASS_LIST_H */
Note: See TracBrowser for help on using the repository browser.