Changeset 2084 for code/branches/objecthierarchy/src/core/Identifier.h
- Timestamp:
- Nov 1, 2008, 2:51:02 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/objecthierarchy/src/core/Identifier.h
r2063 r2084 57 57 #include <set> 58 58 #include <map> 59 #include <vector> 59 60 #include <string> 60 61 #include <utility> … … 221 222 /** @brief Returns true if this class has at least one console command. @return True if this class has at least one console command */ 222 223 inline bool hasConsoleCommands() const { return this->bHasConsoleCommands_; } 224 /** @brief Returns true if this class has at least one construction callback Functor registered. */ 225 inline bool hasConstructionCallback() const { return this->bHasConstructionCallback_; } 223 226 224 227 /** @brief Returns true, if a branch of the class-hierarchy is being created, causing all new objects to store their parents. @return The status of the class-hierarchy creation */ … … 247 250 ConsoleCommand* getConsoleCommand(const std::string& name) const; 248 251 ConsoleCommand* getLowercaseConsoleCommand(const std::string& name) const; 252 253 void addConstructionCallback(Functor* functor); 254 void removeConstructionCallback(Functor* functor); 249 255 250 256 void initializeClassHierarchy(std::set<const Identifier*>* parents, bool bRootClass); … … 267 273 /** @brief Returns the direct children of the class the Identifier belongs to. @return The list of all direct children */ 268 274 inline std::set<const Identifier*>& getDirectChildrenIntern() const { return (*this->directChildren_); } 275 276 bool bHasConstructionCallback_; //!< True if at least one Functor is registered to get informed when an object of type T is created. 277 std::vector<Functor*> constructionCallbacks_; //!< All construction callback Functors of this class. 269 278 270 279 ObjectListBase* objects_; //!< The list of all objects of this class … … 441 450 COUT(5) << "*** ClassIdentifier: Added object to " << this->getName() << "-list." << std::endl; 442 451 object->getMetaList().add(this->objects_, this->objects_->add(new ObjectListElement<T>(object))); 452 if (this->bHasConstructionCallback_) 453 { 454 // Call all registered callbacks that a new object of type T has been created. 455 // Do NOT deliver a T* pointer here because it's way too risky (object not yet fully created). 456 for (unsigned int i = 0; i < this->constructionCallbacks_.size(); ++i) 457 (*constructionCallbacks_[i])(); 458 } 443 459 } 444 460
Note: See TracChangeset
for help on using the changeset viewer.