Changeset 9646 for code/branches/core6/src
- Timestamp:
- Aug 13, 2013, 11:35:26 PM (11 years ago)
- Location:
- code/branches/core6/src/libraries/core
- Files:
-
- 2 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/core6/src/libraries/core/CoreIncludes.h
r9644 r9646 90 90 91 91 /** 92 @brief Registers the class in the framework. 93 @param ClassName The name of the class 94 */ 95 #define RegisterClass(ClassName) \ 96 RegisterClassWithFactory(ClassName, new orxonox::ClassFactoryWithContext<ClassName>(), true) 97 98 /** 99 @brief Registers the class in the framework (for classes without arguments in their constructor). 100 @param ClassName The name of the class 101 */ 102 #define RegisterClassNoArgs(ClassName) \ 103 RegisterClassWithFactory(ClassName, new orxonox::ClassFactoryNoArgs<ClassName>(), true) 104 105 /** 106 @brief Registers the class in the framework (for classes which should not be loaded through XML). 107 @param ClassName The name of the class 108 */ 109 #define RegisterUnloadableClass(ClassName) \ 110 RegisterClassWithFactory(ClassName, new orxonox::ClassFactoryWithContext<ClassName>(), false) 111 112 /** 113 @brief Registers an abstract class in the framework. 114 @param ClassName The name of the class 115 */ 116 #define RegisterAbstractClass(ClassName) \ 117 RegisterClassWithFactory(ClassName, static_cast<ClassFactory<ClassName>*>(NULL), false) 118 119 /** 120 @brief Registers the class in the framework with a given Factory. 121 @param ClassName The name of the class 122 */ 123 #define RegisterClassWithFactory(ClassName, FactoryInstance, bLoadable) \ 124 Identifier& _##ClassName##Identifier = orxonox::registerClass<ClassName>(#ClassName, FactoryInstance, bLoadable) 125 126 /** 92 127 @brief Intern macro, containing the common parts of @c RegisterObject and @c RegisterRootObject. 93 128 @param ClassName The name of the class 94 129 @param bRootClass True if the class is directly derived from orxonox::OrxonoxClass 95 130 */ 96 #define InternRegisterObject(ClassName , bRootClass) \97 if (ClassIdentifier<ClassName>::getIdentifier(#ClassName)->initializeObject(this , #ClassName, bRootClass)) \131 #define InternRegisterObject(ClassName) \ 132 if (ClassIdentifier<ClassName>::getIdentifier(#ClassName)->initializeObject(this)) \ 98 133 return; \ 99 134 else \ … … 105 140 */ 106 141 #define RegisterObject(ClassName) \ 107 InternRegisterObject(ClassName , false)142 InternRegisterObject(ClassName) 108 143 109 144 /** … … 115 150 */ 116 151 #define RegisterRootObject(ClassName) \ 117 InternRegisterObject(ClassName, true) 118 119 /** 120 @brief Registers the class in the framework. 121 @param ClassName The name of the class 122 */ 123 #define RegisterClass(ClassName) \ 124 RegisterClassWithFactory(ClassName, new orxonox::ClassFactoryWithContext<ClassName>(), true) 125 126 /** 127 @brief Registers the class in the framework (for classes which should not be loaded through XML). 128 @param ClassName The name of the class 129 */ 130 #define RegisterUnloadableClass(ClassName) \ 131 RegisterClassWithFactory(ClassName, new orxonox::ClassFactoryWithContext<ClassName>(), false) 132 133 /** 134 @brief Registers the class in the framework with a given Factory. 135 @param ClassName The name of the class 136 */ 137 #define RegisterClassWithFactory(ClassName, FactoryInstance, bLoadable) \ 138 Identifier* _##ClassName##Identifier = orxonox::registerClass<ClassName>(#ClassName, FactoryInstance, bLoadable) 152 InternRegisterObject(ClassName) 139 153 140 154 /** … … 152 166 */ 153 167 template <class T> 154 inline Identifier *registerClass(const std::string& name, ClassFactory<T>* factory, bool bLoadable = true)168 inline Identifier& registerClass(const std::string& name, ClassFactory<T>* factory, bool bLoadable = true) 155 169 { 156 170 return registerClass<T>(name, static_cast<Factory*>(factory), bLoadable); … … 164 178 */ 165 179 template <class T> 166 inline Identifier *registerClass(const std::string& name, Factory* factory, bool bLoadable = true)180 inline Identifier& registerClass(const std::string& name, Factory* factory, bool bLoadable = true) 167 181 { 168 182 orxout(verbose, context::misc::factory) << "Create entry for " << name << " in Factory." << endl; … … 170 184 identifier->setFactory(factory); 171 185 identifier->setLoadable(bLoadable); 172 return identifier;186 return *identifier; 173 187 } 174 188 -
code/branches/core6/src/libraries/core/class/CMakeLists.txt
r9577 r9646 3 3 Identifier.cc 4 4 IdentifierManager.cc 5 OrxonoxClass.cc 6 OrxonoxInterface.cc 5 7 ) -
code/branches/core6/src/libraries/core/class/Identifiable.cc
r9574 r9646 35 35 36 36 #include <cassert> 37 #include "core/CoreIncludes.h" 37 38 #include "core/object/Context.h" 38 39 #include "Identifier.h" … … 40 41 namespace orxonox 41 42 { 43 RegisterClassNoArgs(Identifiable); 44 42 45 /** 43 46 @brief Constructor: Sets the default values. … … 46 49 { 47 50 this->identifier_ = 0; 48 this->parents_ = 0; 49 // Optimisation 50 this->objectPointers_.reserve(6); 51 } 51 this->objectPointers_.reserve(6); // Optimisation 52 52 53 /** 54 @brief Destructor: Removes the object from the object-lists 55 */ 56 Identifiable::~Identifiable() 57 { 58 // parents_ exists only if isCreatingHierarchy() of the associated Identifier returned true while creating the class 59 if (this->parents_) 60 delete this->parents_; 53 RegisterObject(Identifiable); 61 54 } 62 55 -
code/branches/core6/src/libraries/core/class/Identifiable.h
r9574 r9646 55 55 public: 56 56 Identifiable(); 57 virtual ~Identifiable() ;57 virtual ~Identifiable() {} 58 58 59 59 /// Returns the Identifier of the object. … … 119 119 private: 120 120 Identifier* identifier_; //!< The Identifier of the object 121 std::set<const Identifier*>* parents_; //!< List of all parents of the object122 121 123 122 /// 'Fast map' that holds this-pointers of all derived types -
code/branches/core6/src/libraries/core/class/Identifier.cc
r9641 r9646 37 37 38 38 #include "util/StringUtils.h" 39 #include "core/CoreIncludes.h" 39 40 #include "core/config/ConfigValueContainer.h" 40 41 #include "core/XMLPort.h" … … 52 53 : classID_(IdentifierManager::getInstance().getUniqueClassId()) 53 54 { 54 this->bCreatedOneObject_ = false;55 this->bSetName_ = false;56 55 this->factory_ = 0; 56 this->bInitialized_ = false; 57 57 this->bLoadable_ = false; 58 58 … … 80 80 81 81 /** 82 @brief Registers a class, which means that the name and the parents get stored.83 @param parents A list, containing the Identifiers of all parents of the class84 @param bRootClass True if the class is either an Interface or the BaseObject itself85 */86 void Identifier::initializeClassHierarchy(std::set<const Identifier*>* parents, bool bRootClass)87 {88 // Check if at least one object of the given type was created89 if (!this->bCreatedOneObject_ && IdentifierManager::getInstance().isCreatingHierarchy())90 {91 // If no: We have to store the information and initialize the Identifier92 orxout(verbose, context::identifier) << "Register Class in ClassIdentifier<" << this->getName() << ">-Singleton -> Initialize Singleton." << endl;93 if (bRootClass)94 this->initialize(0); // If a class is derived from two interfaces, the second interface might think it's derived from the first because of the order of constructor-calls. Thats why we set parents to zero in that case.95 else96 this->initialize(parents);97 }98 }99 100 /**101 @brief Initializes the Identifier with a list containing all parents of the class the Identifier belongs to.102 @param parents A list containing all parents103 */104 void Identifier::initialize(std::set<const Identifier*>* parents)105 {106 orxout(verbose, context::identifier) << "Initialize ClassIdentifier<" << this->name_ << ">-Singleton." << endl;107 this->bCreatedOneObject_ = true;108 109 if (parents)110 {111 this->parents_ = (*parents);112 this->directParents_ = (*parents);113 114 // Iterate through all parents115 for (std::set<const Identifier*>::iterator it = parents->begin(); it != parents->end(); ++it)116 {117 // Tell the parent we're one of it's children118 (*it)->children_.insert((*it)->children_.end(), this);119 120 // Erase all parents of our parent from our direct-parent-list121 for (std::set<const Identifier*>::const_iterator it1 = (*it)->getParents().begin(); it1 != (*it)->getParents().end(); ++it1)122 {123 // Search for the parent's parent in our direct-parent-list124 for (std::set<const Identifier*>::iterator it2 = this->directParents_.begin(); it2 != this->directParents_.end(); ++it2)125 {126 if ((*it1) == (*it2))127 {128 // We've found a non-direct parent in our list: Erase it129 this->directParents_.erase(it2);130 break;131 }132 }133 }134 }135 136 // Now iterate through all direct parents137 for (std::set<const Identifier*>::iterator it = this->directParents_.begin(); it != this->directParents_.end(); ++it)138 {139 // Tell the parent we're one of it's direct children140 (*it)->directChildren_.insert((*it)->directChildren_.end(), this);141 142 // Create the super-function dependencies143 (*it)->createSuperFunctionCaller();144 }145 }146 }147 148 /**149 82 @brief Sets the name of the class. 150 83 */ 151 84 void Identifier::setName(const std::string& name) 152 85 { 153 if ( !this->bSetName_)86 if (name != this->name_) 154 87 { 155 88 this->name_ = name; 156 this->bSetName_ = true; 157 IdentifierManager::getInstance().registerIdentifier(this); 89 IdentifierManager::getInstance().addIdentifierToLookupMaps(this); 158 90 } 159 91 } … … 194 126 { 195 127 this->networkID_ = id; 196 IdentifierManager::getInstance().registerIdentifier(this); 128 IdentifierManager::getInstance().addIdentifierToLookupMaps(this); 129 } 130 131 /** 132 * @brief Used to define the direct parents of an Identifier of an abstract class. 133 */ 134 Identifier& Identifier::inheritsFrom(Identifier* directParent) 135 { 136 if (this->parents_.empty()) 137 this->directParents_.insert(directParent); 138 else 139 orxout(internal_error) << "Trying to add " << directParent->getName() << " as a direct parent of " << this->getName() << " after the latter was already initialized" << endl; 140 141 return *this; 142 } 143 144 /** 145 * @brief Initializes the parents of this Identifier while creating the class hierarchy. 146 * @param identifiers All identifiers that were used to create an instance of this class (including this identifier itself) 147 */ 148 void Identifier::initializeParents(const std::set<const Identifier*>& identifiers) 149 { 150 if (!IdentifierManager::getInstance().isCreatingHierarchy()) 151 { 152 orxout(internal_warning) << "Identifier::initializeParents() created outside of class hierarchy creation" << endl; 153 return; 154 } 155 156 for (std::set<const Identifier*>::const_iterator it = identifiers.begin(); it != identifiers.end(); ++it) 157 if (*it != this) 158 this->parents_.insert(*it); 159 } 160 161 /** 162 * @brief Initializes the direct parents of this Identifier while creating the class hierarchy. This is only intended for abstract classes. 163 */ 164 void Identifier::initializeDirectParentsOfAbstractClass() 165 { 166 if (!IdentifierManager::getInstance().isCreatingHierarchy()) 167 { 168 orxout(internal_warning) << "Identifier::initializeDirectParentsOfAbstractClass() created outside of class hierarchy creation" << endl; 169 return; 170 } 171 172 // only Identifiable is allowed to have no parents (even tough it's currently not abstract) 173 if (this->directParents_.empty() && !this->isExactlyA(Class(Identifiable))) 174 { 175 orxout(internal_error) << "Identifier " << this->getName() << " / " << this->getTypeidName() << " is marked as abstract but has no direct parents defined" << endl; 176 orxout(internal_error) << " If this class is not abstract, use RegisterClass(ThisClass);" << endl; 177 orxout(internal_error) << " If this class is abstract, use RegisterAbstractClass(ThisClass).inheritsFrom(Class(BaseClass));" << endl; 178 } 179 } 180 181 /** 182 * @brief Finishes the initialization of this Identifier after creating the class hierarchy by wiring the (direct) parent/child references correctly. 183 */ 184 void Identifier::finishInitialization() 185 { 186 if (!IdentifierManager::getInstance().isCreatingHierarchy()) 187 { 188 orxout(internal_warning) << "Identifier::finishInitialization() created outside of class hierarchy creation" << endl; 189 return; 190 } 191 192 if (this->isInitialized()) 193 return; 194 195 // if no direct parents were defined, initialize them with the set of all parents 196 if (this->directParents_.empty()) 197 this->directParents_ = this->parents_; 198 199 // initialize all parents before continuing to initialize this identifier 200 for (std::set<const Identifier*>::const_iterator it = this->directParents_.begin(); it != this->directParents_.end(); ++it) 201 { 202 Identifier* directParent = const_cast<Identifier*>(*it); 203 directParent->finishInitialization(); // initialize parent 204 this->parents_.insert(directParent); // direct parent is also a parent 205 this->parents_.insert(directParent->parents_.begin(), directParent->parents_.end()); // parents of direct parent are also parents 206 } 207 208 // parents of parents are no direct parents of this identifier 209 for (std::set<const Identifier*>::const_iterator it_parent = this->parents_.begin(); it_parent != this->parents_.end(); ++it_parent) 210 for (std::set<const Identifier*>::const_iterator it_parent_parent = const_cast<Identifier*>(*it_parent)->parents_.begin(); it_parent_parent != const_cast<Identifier*>(*it_parent)->parents_.end(); ++it_parent_parent) 211 this->directParents_.erase(*it_parent_parent); 212 213 // tell all parents that this identifier is a child 214 for (std::set<const Identifier*>::const_iterator it = this->parents_.begin(); it != this->parents_.end(); ++it) 215 const_cast<Identifier*>(*it)->children_.insert(this); 216 217 // tell all direct parents that this identifier is a direct child 218 for (std::set<const Identifier*>::const_iterator it = this->directParents_.begin(); it != this->directParents_.end(); ++it) 219 { 220 const_cast<Identifier*>(*it)->directChildren_.insert(this); 221 222 // Create the super-function dependencies 223 (*it)->createSuperFunctionCaller(); 224 } 225 226 this->bInitialized_ = true; 197 227 } 198 228 -
code/branches/core6/src/libraries/core/class/Identifier.h
r9645 r9646 139 139 inline void setLoadable(bool bLoadable) { this->bLoadable_ = bLoadable; } 140 140 141 /// Returns true if the Identifier was completely initialized. 142 inline bool isInitialized() const { return this->bInitialized_; } 143 144 145 ///////////////////////////// 146 ////// Class Hierarchy ////// 147 ///////////////////////////// 148 Identifier& inheritsFrom(Identifier* directParent); 149 150 void initializeParents(const std::set<const Identifier*>& identifiers); 151 void initializeDirectParentsOfAbstractClass(); 152 void finishInitialization(); 153 141 154 bool isA(const Identifier* identifier) const; 142 155 bool isExactlyA(const Identifier* identifier) const; … … 146 159 bool isDirectParentOf(const Identifier* identifier) const; 147 160 148 149 /////////////////////////////150 ////// Class Hierarchy //////151 /////////////////////////////152 161 /// Returns the parents of the class the Identifier belongs to. 153 162 inline const std::set<const Identifier*>& getParents() const { return this->parents_; } … … 218 227 virtual void createSuperFunctionCaller() const = 0; 219 228 220 void initializeClassHierarchy(std::set<const Identifier*>* parents, bool bRootClass);221 222 /// Returns the children of the class the Identifier belongs to.223 inline std::set<const Identifier*>& getChildrenIntern() const { return this->children_; }224 /// Returns the direct children of the class the Identifier belongs to.225 inline std::set<const Identifier*>& getDirectChildrenIntern() const { return this->directChildren_; }226 227 229 private: 228 void initialize(std::set<const Identifier*>* parents);229 230 230 std::set<const Identifier*> parents_; //!< The parents of the class the Identifier belongs to 231 mutable std::set<const Identifier*> children_;//!< The children of the class the Identifier belongs to231 std::set<const Identifier*> children_; //!< The children of the class the Identifier belongs to 232 232 233 233 std::set<const Identifier*> directParents_; //!< The direct parents of the class the Identifier belongs to 234 mutable std::set<const Identifier*> directChildren_; //!< The direct children of the class the Identifier belongs to 235 236 bool bCreatedOneObject_; //!< True if at least one object of the given type was created (used to determine the need of storing the parents) 237 bool bSetName_; //!< True if the name is set 234 std::set<const Identifier*> directChildren_; //!< The direct children of the class the Identifier belongs to 235 236 bool bInitialized_; //!< Is true if the Identifier was completely initialized 238 237 bool bLoadable_; //!< False = it's not permitted to load the object through XML 239 238 std::string name_; //!< The name of the class the Identifier belongs to … … 277 276 static ClassIdentifier<T>* getIdentifier(const std::string& name); 278 277 279 bool initializeObject(T* object , const std::string& className, bool bRootClass);278 bool initializeObject(T* object); 280 279 281 280 void setConfigValues(T* object, Configurable*) const; … … 351 350 352 351 // Get the entry from the map 353 ClassIdentifier<T>::classIdentifier_s = (ClassIdentifier<T>*)IdentifierManager::getInstance().get IdentifierSingleton(proposal);352 ClassIdentifier<T>::classIdentifier_s = (ClassIdentifier<T>*)IdentifierManager::getInstance().getGloballyUniqueIdentifier(proposal); 354 353 355 354 if (ClassIdentifier<T>::classIdentifier_s == proposal) … … 365 364 @brief Adds an object of the given type to the ObjectList. 366 365 @param object The object to add 367 @param className The name of the class T 368 @param bRootClass True if this is a root class (i.e. it inherits directly from OrxonoxClass) 369 */ 370 template <class T> 371 bool ClassIdentifier<T>::initializeObject(T* object, const std::string& className, bool bRootClass) 372 { 373 if (bRootClass) 374 orxout(verbose, context::object_list) << "Register Root-Object: " << className << endl; 375 else 376 orxout(verbose, context::object_list) << "Register Object: " << className << endl; 366 */ 367 template <class T> 368 bool ClassIdentifier<T>::initializeObject(T* object) 369 { 370 orxout(verbose, context::object_list) << "Register Object: " << this->getName() << endl; 377 371 378 372 object->identifier_ = this; 379 373 if (IdentifierManager::getInstance().isCreatingHierarchy()) 380 374 { 381 if (bRootClass && !object->parents_) 382 object->parents_ = new std::set<const Identifier*>(); 383 384 if (object->parents_) 385 { 386 this->initializeClassHierarchy(object->parents_, bRootClass); 387 object->parents_->insert(object->parents_->end(), this); 388 } 375 IdentifierManager::getInstance().createdObject(object); 389 376 390 377 this->setConfigValues(object, object); -
code/branches/core6/src/libraries/core/class/IdentifierManager.cc
r9644 r9646 37 37 38 38 #include "util/StringUtils.h" 39 #include "core/CoreIncludes.h" 39 40 #include "core/config/ConfigValueContainer.h" 40 41 #include "core/XMLPort.h" … … 60 61 @return The identifier (unique instance) 61 62 */ 62 Identifier* IdentifierManager::get IdentifierSingleton(Identifier* proposal)63 Identifier* IdentifierManager::getGloballyUniqueIdentifier(Identifier* proposal) 63 64 { 64 65 const std::string& typeidName = proposal->getTypeidName(); … … 81 82 * Registers the identifier in all maps of the IdentifierManager. 82 83 */ 83 void IdentifierManager::registerIdentifier(Identifier* identifier) 84 { 85 IdentifierManager::getInstance().identifierByString_[identifier->getName()] = identifier; 86 IdentifierManager::getInstance().identifierByLowercaseString_[getLowercase(identifier->getName())] = identifier; 87 IdentifierManager::getInstance().identifierByNetworkId_[identifier->getNetworkID()] = identifier; 84 void IdentifierManager::addIdentifierToLookupMaps(Identifier* identifier) 85 { 86 const std::string& typeidName = identifier->getTypeidName(); 87 if (this->identifierByTypeidName_.find(typeidName) != this->identifierByTypeidName_.end()) 88 { 89 this->identifierByString_[identifier->getName()] = identifier; 90 this->identifierByLowercaseString_[getLowercase(identifier->getName())] = identifier; 91 this->identifierByNetworkId_[identifier->getNetworkID()] = identifier; 92 } 93 else 94 orxout(internal_warning) << "Trying to add an identifier to lookup maps which is not known to IdentifierManager" << endl; 88 95 } 89 96 … … 95 102 orxout(internal_status) << "Create class-hierarchy" << endl; 96 103 this->startCreatingHierarchy(); 104 105 std::set<Identifier*> initializedIdentifiers; 106 107 // iterate over all identifiers, create one instance of each class and initialize the identifiers 108 { 109 Context temporaryContext(NULL); 110 for (std::map<std::string, Identifier*>::const_iterator it = this->identifierByTypeidName_.begin(); it != this->identifierByTypeidName_.end(); ++it) 111 { 112 orxout(verbose, context::identifier) << "Initialize ClassIdentifier<" << it->second->getName() << ">-Singleton." << endl; 113 // To initialize the identifier, we create a new object and delete it afterwards. 114 if (it->second->hasFactory()) 115 { 116 this->identifiersOfNewObject_.clear(); 117 Identifiable* temp = it->second->fabricate(&temporaryContext); 118 if (temp->getIdentifier() != it->second) 119 orxout(internal_error) << "Newly created object has unexpected identifier" << endl; 120 delete temp; 121 122 it->second->initializeParents(this->identifiersOfNewObject_); 123 } 124 else 125 it->second->initializeDirectParentsOfAbstractClass(); 126 127 initializedIdentifiers.insert(it->second); 128 } 129 } 130 131 // finish the initialization of all identifiers 97 132 for (std::map<std::string, Identifier*>::const_iterator it = this->identifierByTypeidName_.begin(); it != this->identifierByTypeidName_.end(); ++it) 98 133 { 99 // To create the new branch of the class-hierarchy, we create a new object and delete it afterwards. 100 if (it->second->hasFactory()) 101 { 102 Identifiable* temp = it->second->fabricate(0); 103 delete temp; 104 } 105 } 134 if (initializedIdentifiers.find(it->second) != initializedIdentifiers.end()) 135 it->second->finishInitialization(); 136 else 137 orxout(internal_error) << "Identifier was registered late and is not initialized: " << it->second->getName() << " / " << it->second->getTypeidName() << endl; 138 } 139 106 140 this->stopCreatingHierarchy(); 107 141 orxout(internal_status) << "Finished class-hierarchy creation" << endl; … … 123 157 124 158 /** 159 * @brief Notifies the IdentifierManager about a newly created object while creating the class hierarchy. 160 */ 161 void IdentifierManager::createdObject(Identifiable* identifiable) 162 { 163 if (this->isCreatingHierarchy()) 164 this->identifiersOfNewObject_.insert(identifiable->getIdentifier()); 165 else 166 orxout(internal_warning) << "createdObject() called outside of class hierarchy creation" << endl; 167 } 168 169 /** 125 170 @brief Returns the Identifier with a given name. 126 171 @param name The name of the wanted Identifier -
code/branches/core6/src/libraries/core/class/IdentifierManager.h
r9644 r9646 38 38 39 39 #include <map> 40 #include <set> 40 41 #include <string> 41 42 … … 47 48 static IdentifierManager& getInstance(); 48 49 49 Identifier* get IdentifierSingleton(Identifier* proposal);50 void registerIdentifier(Identifier* identifier);50 Identifier* getGloballyUniqueIdentifier(Identifier* proposal); 51 void addIdentifierToLookupMaps(Identifier* identifier); 51 52 52 53 unsigned int getUniqueClassId() … … 59 60 void createClassHierarchy(); 60 61 void destroyAllIdentifiers(); 62 63 void createdObject(Identifiable* identifiable); 61 64 62 65 /// Returns true, if a branch of the class-hierarchy is being created, causing all new objects to store their parents. … … 103 106 104 107 int hierarchyCreatingCounter_s; //!< Bigger than zero if at least one Identifier stores its parents (its an int instead of a bool to avoid conflicts with multithreading) 108 std::set<const Identifier*> identifiersOfNewObject_; //!< Used while creating the object hierarchy to keep track of the identifiers of a newly created object 105 109 unsigned int classIDCounter_s; //!< counter for the unique classIDs 106 110 }; -
code/branches/core6/src/libraries/core/class/OrxonoxClass.h
r9607 r9646 53 53 class _CoreExport OrxonoxClass : virtual public Configurable, virtual public Destroyable 54 54 { 55 public: 56 OrxonoxClass(); 55 57 }; 56 58 } -
code/branches/core6/src/libraries/core/class/OrxonoxInterface.h
r9585 r9646 50 50 class _CoreExport OrxonoxInterface : virtual public Configurable, virtual public Destroyable 51 51 { 52 public: 53 OrxonoxInterface(); 52 54 }; 53 55 } -
code/branches/core6/src/libraries/core/class/Super.h
r9568 r9646 103 103 { \ 104 104 ClassIdentifier<T>* identifier = ClassIdentifier<T>::getIdentifier(); \ 105 for (std::set<const Identifier*>::iterator it = identifier->getDirectChildren Intern().begin(); it != identifier->getDirectChildrenIntern().end(); ++it) \105 for (std::set<const Identifier*>::iterator it = identifier->getDirectChildren().begin(); it != identifier->getDirectChildren().end(); ++it) \ 106 106 { \ 107 107 if (((ClassIdentifier<T>*)(*it))->bSuperFunctionCaller_##functionname##_isFallback_ && ((ClassIdentifier<T>*)(*it))->superFunctionCaller_##functionname##_) \ … … 171 171 172 172 // Iterate through all children 173 for (std::set<const Identifier*>::iterator it = identifier->getDirectChildren Intern().begin(); it != identifier->getDirectChildrenIntern().end(); ++it)173 for (std::set<const Identifier*>::iterator it = identifier->getDirectChildren().begin(); it != identifier->getDirectChildren().end(); ++it) 174 174 { 175 175 // Check if the caller is a fallback-caller
Note: See TracChangeset
for help on using the changeset viewer.