Changeset 5611 for code/branches/resource2/src/core/ClassFactory.h
- Timestamp:
- Aug 5, 2009, 5:20:06 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/resource2/src/core/ClassFactory.h
r5610 r5611 54 54 class ClassFactory : public BaseFactory 55 55 { 56 friend class Factory;57 58 56 public: 59 57 static bool create(const std::string& name, bool bLoadable = true); … … 61 59 62 60 private: 63 ClassFactory( bool bLoadable) : bLoadable_(bLoadable) {}64 ClassFactory(const ClassFactory& factory) ;// Don't copy61 ClassFactory() {} // Don't create 62 ClassFactory(const ClassFactory& factory) {} // Don't copy 65 63 virtual ~ClassFactory() {} // Don't delete 66 64 67 Identifier* createIdentifier(const std::string& name); 68 69 bool bLoadable_; 65 static T* createNewObject(BaseObject* creator); 70 66 }; 71 67 … … 80 76 { 81 77 COUT(4) << "*** ClassFactory: Create entry for " << name << " in Factory." << std::endl; 82 Factory::add(name, new ClassFactory<T>(bLoadable)); 78 ClassIdentifier<T>::getIdentifier(name)->addFactory(new ClassFactory<T>); 79 ClassIdentifier<T>::getIdentifier()->setLoadable(bLoadable); 80 Factory::add(name, ClassIdentifier<T>::getIdentifier()); 83 81 84 82 return true; … … 92 90 inline BaseObject* ClassFactory<T>::fabricate(BaseObject* creator) 93 91 { 94 return new T(creator);92 return ClassFactory<T>::createNewObject(creator); 95 93 } 96 94 97 95 /** 96 @brief Creates and returns a new object of class T; this is a wrapper for the new operator. 97 @return The new object 98 98 */ 99 99 template <class T> 100 inline Identifier* ClassFactory<T>::createIdentifier(const std::string& name)100 inline T* ClassFactory<T>::createNewObject(BaseObject* creator) 101 101 { 102 Identifier* identifier = ClassIdentifier<T>::getIdentifier(name); 103 identifier->addFactory(this); 104 identifier->setLoadable(this->bLoadable_); 105 return identifier; 102 return new T(creator); 106 103 } 107 104 }
Note: See TracChangeset
for help on using the changeset viewer.