Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 25, 2007, 2:59:58 AM (16 years ago)
Author:
landauf
Message:

added some "const" qualifiers to the identifier-functions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/objecthierarchie/src/Identifier.h

    r231 r239  
    2727
    2828        public:
    29             virtual void removeObject(OrxonoxClass* object) {};
    30 
    31             virtual BaseObject* fabricate() {};
    32 
    33             bool isA(Identifier* identifier);
    34             bool isDirectlyA(Identifier* identifier);
    35             bool isChildOf(Identifier* identifier);
    36             bool isDirectChildOf(Identifier* identifier);
    37             bool isParentOf(Identifier* identifier);
    38             bool isDirectParentOf(Identifier* identifier);
    39 
    40             std::string getName() { return this->name_; }
    41             IdentifierList* getDirectParents() { return &(this->directParents_); }
    42             IdentifierList* getAllParents() { return &(this->allParents_); }
    43             IdentifierList* getDirectChildren() { return &(this->directChildren_); }
    44             IdentifierList* getAllChildren() { return &(this->allChildren_); }
     29            virtual void removeObject(OrxonoxClass* object) const = 0;
     30
     31            virtual BaseObject* fabricate() const = 0;
     32
     33            bool isA(const Identifier* identifier) const;
     34            bool isDirectlyA(const Identifier* identifier) const;
     35            bool isChildOf(const Identifier* identifier) const;
     36            bool isDirectChildOf(const Identifier* identifier) const;
     37            bool isParentOf(const Identifier* identifier) const;
     38            bool isDirectParentOf(const Identifier* identifier) const;
     39
     40            const std::string& getName() const { return this->name_; }
     41            const IdentifierList* getDirectParents() const { return this->directParents_; }
     42            const IdentifierList* getAllParents() const { return this->allParents_; }
     43            const IdentifierList* getDirectChildren() const { return this->directChildren_; }
     44            const IdentifierList* getAllChildren() const { return this->allChildren_; }
    4545
    4646            static bool isCreatingHierarchy() { return (hierarchyCreatingCounter_s > 0); }
     
    5050            Identifier(const Identifier& identifier) {}
    5151            virtual ~Identifier();
    52             void initialize(IdentifierList* parents);
     52            void initialize(const IdentifierList* parents);
    5353
    5454            static void startCreatingHierarchy()
     
    6868            }
    6969
    70             IdentifierList directParents_;
    71             IdentifierList allParents_;
    72             IdentifierList directChildren_;
    73             IdentifierList allChildren_;
     70            IdentifierList* directParents_;
     71            IdentifierList* allParents_;
     72            IdentifierList* directChildren_;
     73            IdentifierList* allChildren_;
    7474
    7575            std::string name_;
     
    9292
    9393        public:
    94             static ClassIdentifier<T>* registerClass(IdentifierList* parents, std::string name, bool bRootClass, bool bIsAbstractClass);
     94            static ClassIdentifier<T>* registerClass(const IdentifierList* parents, const std::string& name, bool bRootClass, bool bIsAbstractClass);
    9595            static ClassIdentifier<T>* getIdentifier();
    96             BaseObject* fabricate();
    97             T* fabricateClass();
     96            BaseObject* fabricate() const;
     97            T* fabricateClass() const;
    9898            static void addObject(T* object);
    99             void removeObject(OrxonoxClass* object);
     99            void removeObject(OrxonoxClass* object) const;
    100100
    101101        private:
     
    105105
    106106            static ClassIdentifier<T>* pointer_s;
    107             ObjectList<T> objects_s;
     107            ObjectList<T>* objects_;
    108108    };
    109109
     
    114114    ClassIdentifier<T>::ClassIdentifier()
    115115    {
     116        this->objects_ = new ObjectList<T>;
    116117    }
    117118
     
    119120    ClassIdentifier<T>::~ClassIdentifier()
    120121    {
     122        delete this->objects_;
    121123        this->pointer_s = NULL;
    122124    }
    123125
    124126    template <class T>
    125     BaseObject* ClassIdentifier<T>::fabricate()
     127    BaseObject* ClassIdentifier<T>::fabricate() const
    126128    {
    127129        return dynamic_cast<BaseObject*>(this->fabricateClass());
     
    129131
    130132    template <class T>
    131     T* ClassIdentifier<T>::fabricateClass()
     133    T* ClassIdentifier<T>::fabricateClass() const
    132134    {
    133135        if (!this->bIsAbstractClass_)
     
    144146
    145147    template <class T>
    146     ClassIdentifier<T>* ClassIdentifier<T>::registerClass(IdentifierList* parents, std::string name, bool bRootClass, bool bIsAbstractClass)
     148    ClassIdentifier<T>* ClassIdentifier<T>::registerClass(const IdentifierList* parents, const std::string& name, bool bRootClass, bool bIsAbstractClass)
    147149    {
    148150#if HIERARCHY_VERBOSE
     
    202204        std::cout << "*** Added object to " << ClassIdentifier<T>::getIdentifier()->getName() << "-list.\n";
    203205#endif
    204         ClassIdentifier<T>::getIdentifier()->objects_s.add(object);
    205     }
    206 
    207     template <class T>
    208     void ClassIdentifier<T>::removeObject(OrxonoxClass* object)
     206        ClassIdentifier<T>::getIdentifier()->objects_->add(object);
     207    }
     208
     209    template <class T>
     210    void ClassIdentifier<T>::removeObject(OrxonoxClass* object) const
    209211    {
    210212        bool bIterateForwards = !Identifier::isCreatingHierarchy();
     
    217219#endif
    218220
    219         this->objects_s.remove(object, bIterateForwards);
    220 
    221         IdentifierListElement* temp = this->directParents_.first_;
     221        this->objects_->remove(object, bIterateForwards);
     222
     223        IdentifierListElement* temp = this->directParents_->first_;
    222224        while (temp)
    223225        {
     
    285287            }
    286288
    287             inline Identifier* getIdentifier()
     289            inline const Identifier* getIdentifier() const
    288290                { return this->identifier_; }
    289             inline bool isA(Identifier* identifier)
     291            inline bool isA(const Identifier* identifier) const
    290292                { return this->identifier_->isA(identifier); }
    291             inline bool isDirectlyA(Identifier* identifier)
     293            inline bool isDirectlyA(const Identifier* identifier) const
    292294                { return this->identifier_->isDirectlyA(identifier); }
    293             inline bool isChildOf(Identifier* identifier)
     295            inline bool isChildOf(const Identifier* identifier) const
    294296                { return this->identifier_->isChildOf(identifier); }
    295             inline bool isDirectChildOf(Identifier* identifier)
     297            inline bool isDirectChildOf(const Identifier* identifier) const
    296298                { return this->identifier_->isDirectChildOf(identifier); }
    297             inline bool isParentOf(Identifier* identifier)
     299            inline bool isParentOf(const Identifier* identifier) const
    298300                { return this->identifier_->isParentOf(identifier); }
    299             inline bool isDirectParentOf(Identifier* identifier)
     301            inline bool isDirectParentOf(const Identifier* identifier) const
    300302                { return this->identifier_->isDirectParentOf(identifier); }
    301303
Note: See TracChangeset for help on using the changeset viewer.