Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 2, 2007, 2:28:23 AM (17 years ago)
Author:
landauf
Message:

no idea if this has any chance to work… template-syntax is crap

Location:
code/branches/objecthierarchie/src
Files:
3 edited

Legend:

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

    r149 r150  
    2525                { this->identifier_->isDirectParentOf(identifier); }
    2626
    27             Identifier* identifier_;
     27            ClassIdentifier<class BaseObject>* identifier_;
    2828
    2929        protected:
  • code/branches/objecthierarchie/src/ClassHierarchy.cc

    r149 r150  
    66    // ###       Identifier        ###
    77    // ###############################
    8     Identifier* Identifier::pointer_ = NULL;
     8//    Identifier* Identifier::pointer_ = NULL;
    99/*
    1010    Identifier* Identifier::registerClass(IdentifierList* parents)
     
    6565                {
    6666                    this->directParents_->add(temp1->identifier_);
    67                     temp1->identifier_->directChildren_->add(this->pointer_);
     67                    temp1->identifier_->directChildren_->add(this);
    6868                }
    6969
    7070                this->allParents_->add(temp1->identifier_);
    71                 temp1->identifier_->allChildren_->add(this->pointer_);
     71                temp1->identifier_->allChildren_->add(this);
    7272
    7373                temp1 = temp1->next_;
     
    8888    bool Identifier::isA(Identifier* identifier)
    8989    {
    90         return (identifier == this->pointer_ || this->allParents_->isInList(identifier));
     90        return (identifier == this || this->allParents_->isInList(identifier));
    9191    }
    9292
    9393    bool Identifier::isDirectA(Identifier* identifier)
    9494    {
    95         return (identifier == this->pointer_);
     95        return (identifier == this);
    9696    }
    9797
  • code/branches/objecthierarchie/src/ClassHierarchy.h

    r149 r150  
    2222    class ObjectList;
    2323    class BaseObject;
     24    template <class T>
     25    class ClassIdentifier;
    2426
    2527    class Identifier
     
    2931
    3032        public:
    31 //            static Identifier* registerClass(IdentifierList* parents);
    3233            void addObject(BaseObject* object);
    3334            void removeObject(BaseObject* object);
     
    4041            bool isDirectParentOf(Identifier* identifier);
    4142
    42         protected:
     43        private:
    4344            Identifier();
    44             void initialize(IdentifierList* identifier);
    45 
    46             static Identifier* pointer_;
     45            void initialize(IdentifierList* parents);
    4746
    4847            IdentifierList* directParents_;
     
    5453            std::string name_;
    5554
    56         private:
    5755            bool bCreatedOneObject_;
    5856    };
     
    6159    class ClassIdentifier : public Identifier
    6260    {
    63 //        friend class Identifier;
    64 
    6561        public:
    66             static Identifier* registerClass(IdentifierList* parents);
    67             static Identifier* getIdentifier();
     62            static ClassIdentifier<T>* registerClass(IdentifierList* parents);
     63            static ClassIdentifier<T>* getIdentifier();
    6864            static T* create();
    6965
    7066        private:
    7167            ClassIdentifier();
     68
     69            static ClassIdentifier<T>* pointer_;
     70
    7271    };
    7372
    7473    #define getStringFromClassName(ClassName) \
    7574        #ClassName
     75
     76    template <class T>
     77    ClassIdentifier<T>* ClassIdentifier<T>::pointer_ = NULL;
    7678
    7779    template <class T>
     
    8183
    8284    template <class T>
    83     Identifier* ClassIdentifier<T>::registerClass(IdentifierList* parents)
     85    ClassIdentifier<T>* ClassIdentifier<T>::registerClass(IdentifierList* parents)
    8486    {
    8587        if (!pointer_)
     
    9496
    9597    template <class T>
    96     Identifier* ClassIdentifier<T>::getIdentifier()
     98    ClassIdentifier<T>* ClassIdentifier<T>::getIdentifier()
    9799    {
    98100        if (!pointer_)
Note: See TracChangeset for help on using the changeset viewer.