Changeset 9685 in orxonox.OLD for branches/new_class_id/src/lib/lang/new_class_id.h
- Timestamp:
- Aug 22, 2006, 1:16:23 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/new_class_id/src/lib/lang/new_class_id.h
r9682 r9685 8 8 #define _NEW_CLASS_ID_H 9 9 10 #include "new_object_list.h"11 12 10 #include <string> 13 #include <list>14 11 15 12 //! A class to dynamically allocate ClassID's and support a isA operator … … 17 14 { 18 15 public: 19 NewClassID(); 20 ~NewClassID(); 16 NewClassID() : _id(-1), _name("") { }; 17 NewClassID(int id, const std::string& name) : _id(id), _name(name) { }; 18 // the copy constructor is also defined. 19 int id() const { return _id; }; 20 const std::string& name() const { return _name; }; 21 21 22 /** @returns the ClassName of the Topmost Object of the ClassStack */ 23 inline const std::string& getClassName() const { return _classes.front()._objectList->name(); } 24 /** @returns the ID of the Topmost object of the ClassStack */ 25 inline int leafClassID() const { return _classes.front()._objectList->id(); } 26 27 template<class T> void registerObject(T* object, NewObjectList<T>& list); 28 bool isA(const NewObjectListBase& objectList) const; 29 bool isA(int classID) const; 30 bool isA(const std::string& className) const; 31 32 void listInheritance() const; 22 bool operator==(NewClassID id) const { return _id == id._id || _name == id._name; }; 23 bool operator==(int id) const { return _id == id; }; 24 bool operator==(const std::string& name) const { return _name == name; }; 33 25 34 26 private: 35 ////////////////////////////// 36 //// Type Definition Part //// 37 ////////////////////////////// 38 //! A ClassEntry so we can store Classes inside of Objects 39 struct ClassEntry 40 { 41 /** Simple Constuctor @param objectList the NewObjectList, @param iterator the (intrusive) Iterator inside of the ObjectList */ 42 inline ClassEntry (NewObjectListBase* objectList, NewObjectListBase::IteratorBase* iterator) : _objectList(objectList), _iterator(iterator) {} 43 NewObjectListBase* _objectList; //!< A ObjectList this Object is part of 44 NewObjectListBase::IteratorBase* _iterator; //!< An iterator pointing to the position of the Object inside of the List. 45 }; 46 typedef std::list<ClassEntry> ClassList; //!< Type definition for the List. 47 48 ClassList _classes; //!< All Classes this object is part of. 27 int _id; 28 std::string _name; 49 29 }; 50 51 52 /**53 * @brief Registeres an Object of Type T to objectList54 * @param object The Object to append to the objectList.55 * @param objectList The ObjectList to append the Object to.56 *57 * This function is essential to integrate objects into their designated ObjectList.58 * Remember if you do not want objects to be stored in Lists (less overhead),59 * do not attempt to call this function.60 */61 template<class T>62 inline void NewClassID::registerObject(T* object, NewObjectList<T>& objectList)63 {64 this->_classes.push_front(ClassEntry(&objectList, objectList.registerObject(object)));65 }66 67 30 #endif /* _NEW_CLASS_ID_H */
Note: See TracChangeset
for help on using the changeset viewer.