Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Aug 22, 2006, 1:16:23 PM (19 years ago)
Author:
bensch
Message:

adapted many classes to the new ClassID System, now comes the hard part… Scripting… then Network… wow this will be so bad :/

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/new_class_id/src/lib/lang/new_class_id.h

    r9682 r9685  
    88#define _NEW_CLASS_ID_H
    99
    10 #include "new_object_list.h"
    11 
    1210#include <string>
    13 #include <list>
    1411
    1512//! A class to dynamically allocate ClassID's and support a isA operator
     
    1714{
    1815public:
    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; };
    2121
    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; };
    3325
    3426private:
    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;
    4929};
    50 
    51 
    52 /**
    53  * @brief Registeres an Object of Type T to objectList
    54  * @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 
    6730#endif /* _NEW_CLASS_ID_H */
Note: See TracChangeset for help on using the changeset viewer.