Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 19, 2007, 11:01:25 PM (16 years ago)
Author:
landauf
Message:
  • fixed a small bug in the object hierarchy
  • new objects are now added to all class-lists they're derived from (until now they were only added to the list of their class). this means: i'm replacing the tree-structure by a mountain-one, which costs more memory but allows faster iteration.
File:
1 edited

Legend:

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

    r219 r220  
    66
    77
    8 #define registerRootObject(ClassName) \
    9     std::cout << "*** Register Root-Object: " << #ClassName << "\n"; \
     8#define internRegisterRootObject(ClassName, bAbstract) \
    109    if (Identifier::isCreatingHierarchy() && !this->getParents()) \
    1110        this->setParents(new IdentifierList()); \
    12     if (this->getIdentifier()) \
    13         this->getIdentifier()->removeObject(this); \
    14     this->setIdentifier(ClassIdentifier<ClassName>::registerClass(this->getParents(), #ClassName, true, false)); \
     11    this->setIdentifier(ClassIdentifier<ClassName>::registerClass(this->getParents(), #ClassName, true, bAbstract)); \
    1512    if (Identifier::isCreatingHierarchy() && this->getParents()) \
    1613        this->getParents()->add(this->getIdentifier()); \
    1714    this->getIdentifier()->addObject(this)
    1815
     16#define registerRootObject(ClassName) \
     17    std::cout << "*** Register Root-Object: " << #ClassName << "\n"; \
     18    internRegisterRootObject(ClassName, false)
     19
    1920#define registerAbstractRootObject(ClassName) \
    20     std::cout << "*** Register Root-Object: " << #ClassName << "\n"; \
    21     if (Identifier::isCreatingHierarchy() && !this->getParents()) \
    22         this->setParents(new IdentifierList()); \
    23     if (this->getIdentifier()) \
    24         this->getIdentifier()->removeObject(this); \
    25     this->setIdentifier(ClassIdentifier<ClassName>::registerClass(this->getParents(), #ClassName, true, true)); \
     21    std::cout << "*** Register abstract Root-Object: " << #ClassName << "\n"; \
     22    internRegisterRootObject(ClassName, true)
     23
     24#define internRegisterObject(ClassName, bAbstract) \
     25    this->setIdentifier(ClassIdentifier<ClassName>::registerClass(this->getParents(), #ClassName, false, bAbstract)); \
    2626    if (Identifier::isCreatingHierarchy() && this->getParents()) \
    2727        this->getParents()->add(this->getIdentifier()); \
     
    3030#define registerObject(ClassName) \
    3131    std::cout << "*** Register Object: " << #ClassName << "\n"; \
    32     this->getIdentifier()->removeObject(this); \
    33     this->setIdentifier(ClassIdentifier<ClassName>::registerClass(this->getParents(), #ClassName, false, false)); \
    34     if (Identifier::isCreatingHierarchy() && this->getParents()) \
    35         this->getParents()->add(this->getIdentifier()); \
    36     this->getIdentifier()->addObject(this)
     32    internRegisterObject(ClassName, false)
    3733
    3834#define registerAbstractObject(ClassName) \
    39     std::cout << "*** Register Object: " << #ClassName << "\n"; \
    40     this->getIdentifier()->removeObject(this); \
    41     this->setIdentifier(ClassIdentifier<ClassName>::registerClass(this->getParents(), #ClassName, false, true)); \
    42     if (Identifier::isCreatingHierarchy() && this->getParents()) \
    43         this->getParents()->add(this->getIdentifier()); \
    44     this->getIdentifier()->addObject(this)
     35    std::cout << "*** Register abstract Object: " << #ClassName << "\n"; \
     36    internRegisterObject(ClassName, true)
    4537
    4638#define unregisterObject() \
Note: See TracChangeset for help on using the changeset viewer.