Changeset 4004 in orxonox.OLD for orxonox/branches/ll2trunktemp/src
- Timestamp:
- Apr 28, 2005, 7:41:27 PM (20 years ago)
- Location:
- orxonox/branches/ll2trunktemp/src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/branches/ll2trunktemp/src/factory.cc
r4003 r4004 30 30 set everything to zero and define classname 31 31 */ 32 Factory::Factory ( )32 Factory::Factory (const char* name) 33 33 { 34 classname = "NULL";34 this->setClassname(name); 35 35 next = NULL; 36 36 … … 45 45 Factory::~Factory () 46 46 { 47 printf("%s\n", this->classname);48 Factory* tmpDel = this->next;49 this->next = NULL;50 // if (tmpDel)51 // delete tmpDel;47 // printf("%s\n", this->classname); 48 // Factory* tmpDel = this->next; 49 // this->next = NULL; 50 if (this->next) 51 delete this->next; 52 52 } 53 54 void Factory::setClassname(const char* name) 55 { 56 if (classname) 57 delete classname; 58 classname = new char[strlen(name)+1]; 59 strcpy(classname, name); 60 } 61 53 62 54 63 /** -
orxonox/branches/ll2trunktemp/src/factory.h
r4003 r4004 11 11 #include "xmlparser/tinyxml.h" 12 12 13 #define CREATE_FACTORY(x) \ 14 class x ## Factory : public Factory { \ 15 public: \ 16 x ## Factory (){setClassname( #x );} \ 17 ~x ## Factory () {}; \ 18 private: \ 19 BaseObject* fabricate( TiXmlElement* root) \ 20 { \ 21 if(!strcmp(root->Value(), getClassname())) return new x ( root); \ 22 else if( getNext() != NULL) return getNext()->fabricate( root); \ 23 else return NULL; \ 24 } \ 25 }; \ 26 x ## Factory global_ ## x ## Factory; 13 /** 14 Creates a factory to a Loadable Class. 15 this should be used at the beginning of all the Classes that should be loadable (in the cc-file) 16 */ 17 #define CREATE_FACTORY(x) tFactory<x>* global_ ## x ## Factory = new tFactory<x>(#x); 18 19 27 20 28 21 //! The Factory is … … 33 26 34 27 public: 35 Factory ( );28 Factory (const char* name = NULL); 36 29 ~Factory (); 37 30 … … 40 33 void initialize(); 41 34 void registerFactory( Factory* factory); 42 void setClassname(c har* name) {classname = name;}43 c har* getClassname() {return classname;};35 void setClassname(const char* name); 36 const char* getClassname() {return classname;}; 44 37 void setNext( Factory* factory) {next = factory;} 45 38 Factory* getNext() {return next;} … … 51 44 }; 52 45 46 template<class T> class tFactory : public Factory 47 { 48 public: 49 tFactory(const char* name); 50 virtual ~tFactory(); 51 52 private: 53 BaseObject* fabricate( TiXmlElement* root); 54 }; 55 56 template<class T> 57 tFactory<T>::tFactory(const char* name) : Factory(name) 58 { 59 printf("fileName: %s\n", name); 60 } 61 62 63 template<class T> 64 tFactory<T>::~tFactory() 65 {} 66 67 template<class T> 68 BaseObject* tFactory<T>::fabricate( TiXmlElement* root) 69 { 70 if(!strcmp(root->Value(), getClassname())) 71 return new T ( root); 72 else if( getNext() != NULL) 73 return getNext()->fabricate( root); 74 else 75 return NULL; 76 } 77 53 78 // helper function 54 79 55 80 const char* grabParameter( TiXmlElement* root, const char* name); 56 81 82 83 84 57 85 #endif /* _FACTORY_H */ 58 86 -
orxonox/branches/ll2trunktemp/src/game_loader.cc
r4003 r4004 25 25 #include "command_node.h" 26 26 #include "vector.h" 27 #include "factory.h" 27 28 28 29 #include <string.h> … … 188 189 { 189 190 // report an error 190 PRINTF 0("Specified XML File is not an orxonox campaign file (Campaign element missing)\n");191 PRINTF(0)("Specified XML File is not an orxonox campaign file (Campaign element missing)\n"); 191 192 delete XMLDoc; 192 193 return NULL; -
orxonox/branches/ll2trunktemp/src/game_loader.h
r3940 r4004 10 10 #include "story_def.h" 11 11 #include "comincl.h" 12 12 13 13 14 //----------------------------------------------------------------------------- -
orxonox/branches/ll2trunktemp/src/orxonox.cc
r3989 r4004 34 34 #include "resource_manager.h" 35 35 #include "text_engine.h" 36 #include "factory.h" 36 37 37 38 #include <string.h> -
orxonox/branches/ll2trunktemp/src/story_entities/world.cc
r3994 r4004 114 114 } 115 115 116 CREATE_FACTORY(World) 116 CREATE_FACTORY(World); 117 117 118 118 World::World( TiXmlElement* root)
Note: See TracChangeset
for help on using the changeset viewer.