Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 25, 2007, 5:21:53 PM (16 years ago)
Author:
landauf
Message:

reimplementation of the factory and parts of the class-hierarchy-generating-algorithm. interfaces with protected constructors are now allowed.

File:
1 edited

Legend:

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

    r231 r244  
    11#include "Identifier.h"
    22#include "Factory.h"
     3#include "ClassFactory.h"
    34#include "IdentifierList.h"
    45#include "ObjectList.h"
     
    78
    89
    9 #define internRegisterRootObject(ClassName, bAbstract) \
    10     if (Identifier::isCreatingHierarchy() && !this->getParents()) \
    11         this->setParents(new IdentifierList()); \
    12     this->setIdentifier(ClassIdentifier<ClassName>::registerClass(this->getParents(), #ClassName, true, bAbstract)); \
     10#define InternRegisterObject(ClassName, bRootClass) \
     11    this->setIdentifier(ClassIdentifier<ClassName>::registerClass(this->getParents(), #ClassName, bRootClass)); \
    1312    if (Identifier::isCreatingHierarchy() && this->getParents()) \
    1413        this->getParents()->add(this->getIdentifier()); \
    1514    ClassIdentifier<ClassName>::addObject(this)
    1615
     16#define InternRegisterRootObject(ClassName) \
     17    if (Identifier::isCreatingHierarchy() && !this->getParents()) \
     18        this->setParents(new IdentifierList()); \
     19    InternRegisterObject(ClassName, true)
     20
    1721#if HIERARCHY_VERBOSE
    18 #define registerRootObject(ClassName) \
    19     std::cout << "*** Register Root-Object: " << #ClassName << "\n"; \
    20     internRegisterRootObject(ClassName, false)
     22#define RegisterObject(ClassName) \
     23    std::cout << "*** Register Object: " << #ClassName << "\n"; \
     24    InternRegisterObject(ClassName, false)
    2125#else
    22 #define registerRootObject(ClassName) \
    23     internRegisterRootObject(ClassName, false)
     26#define RegisterObject(ClassName) \
     27    InternRegisterObject(ClassName, false)
    2428#endif
    2529
    2630#if HIERARCHY_VERBOSE
    27 #define registerAbstractRootObject(ClassName) \
    28     std::cout << "*** Register abstract Root-Object: " << #ClassName << "\n"; \
    29     internRegisterRootObject(ClassName, true)
     31#define RegisterRootObject(ClassName) \
     32    std::cout << "*** Register Root-Object: " << #ClassName << "\n"; \
     33    InternRegisterRootObject(ClassName)
    3034#else
    31 #define registerAbstractRootObject(ClassName) \
    32     internRegisterRootObject(ClassName, true)
     35#define RegisterRootObject(ClassName) \
     36    InternRegisterRootObject(ClassName)
    3337#endif
    3438
    35 #define internRegisterObject(ClassName, bAbstract) \
    36     this->setIdentifier(ClassIdentifier<ClassName>::registerClass(this->getParents(), #ClassName, false, bAbstract)); \
    37     if (Identifier::isCreatingHierarchy() && this->getParents()) \
    38         this->getParents()->add(this->getIdentifier()); \
    39     ClassIdentifier<ClassName>::addObject(this)
    40 
    41 #if HIERARCHY_VERBOSE
    42 #define registerObject(ClassName) \
    43     std::cout << "*** Register Object: " << #ClassName << "\n"; \
    44     internRegisterObject(ClassName, false)
    45 #else
    46 #define registerObject(ClassName) \
    47     internRegisterObject(ClassName, false)
    48 #endif
    49 
    50 #if HIERARCHY_VERBOSE
    51 #define registerAbstractObject(ClassName) \
    52     std::cout << "*** Register abstract Object: " << #ClassName << "\n"; \
    53     internRegisterObject(ClassName, true)
    54 #else
    55 #define registerAbstractObject(ClassName) \
    56     internRegisterObject(ClassName, true)
    57 #endif
    58 
    59 #define unregisterObject() \
     39#define UnregisterObject() \
    6040    this->getIdentifier()->removeObject(this)
    6141
     
    6444
    6545#define CreateFactory(ClassName) \
    66     Identifier* global_##ClassName##_Identifier = ClassIdentifier<ClassName>::getIdentifier()
     46    bool bCreated##ClassName##Factory = ClassFactory<ClassName>::create()
    6747
    68 #define Factory(Name) \
    69     ClassFactory::fabricate(Name)
     48#define ID(Name) \
     49    Factory::getIdentifier(Name)
Note: See TracChangeset for help on using the changeset viewer.