Changeset 790 for code/trunk/src/orxonox/core/Factory.h
- Timestamp:
- Feb 7, 2008, 5:01:44 PM (16 years ago)
- Location:
- code/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
-
Property
svn:ignore
set to
dependencies
-
Property
svn:ignore
set to
-
code/trunk/src/orxonox/core/Factory.h
r258 r790 1 /* 2 * ORXONOX - the hottest 3D action shooter ever to exist 3 * 4 * 5 * License notice: 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * 21 * Author: 22 * Fabian 'x3n' Landau 23 * Co-authors: 24 * ... 25 * 26 */ 27 28 /*! 29 @file Factory.h 30 @brief Definition of the Factory and the BaseFactory class. 31 32 The Factory is a singleton, containing two maps to map either the name or the network ID 33 of a class with the corresponding Identifier. 34 35 Usage: 36 ID(classname) or ID(networkID) returns the corresponding Identifier. 37 38 39 BaseObject is the parent of ClassFactory which is defined in ClassFactory.h. 40 It can't be defined in ClassFactory.h, because of circular dependencies. 41 */ 42 1 43 #ifndef _Factory_H__ 2 44 #define _Factory_H__ … … 5 47 #include <string> 6 48 49 #include "CorePrereqs.h" 50 7 51 namespace orxonox 8 52 { 9 class BaseObject; 10 class Identifier; 53 class BaseObject; // Forward declaration 11 54 12 55 // ############################### 13 56 // ### Factory ### 14 57 // ############################### 15 class Factory 58 //! The Factory is used to map the name or the network ID of a class with its Identifier. 59 class _CoreExport Factory 16 60 { 17 61 public: 18 62 static Identifier* getIdentifier(const std::string& name); 63 static Identifier* getIdentifier(const unsigned int id); 19 64 static void add(const std::string& name, Identifier* identifier); 65 static void changeNetworkID(Identifier* identifier, const unsigned int oldID, const unsigned int newID); 66 static void createClassHierarchy(); 67 68 static Factory* getFactoryPointer(); // avoid overriding order problem in the static intialisation process 20 69 21 70 private: 22 Factory() {} 23 Factory(const Factory& factory) {} 24 ~Factory() {} 71 Factory() {} // don't create 72 Factory(const Factory& factory) {} // don't copy 73 ~Factory() {} // don't delete 25 74 26 st atic Factory* pointer_s;27 std::map< std::string, Identifier*> identifierMap_;75 std::map<std::string, Identifier*> identifierStringMap_; //!< The map, mapping the name with the Identifier 76 std::map<unsigned int, Identifier*> identifierNetworkIDMap_; //!< The map, mapping the network ID with the Identifier 28 77 }; 29 78 … … 31 80 // ### BaseFactory ### 32 81 // ############################### 33 class BaseFactory 82 //! Base-class of ClassFactory. Has to be defined separate because of circular dependencies. 83 class _CoreExport BaseFactory 34 84 { 35 85 public: 36 86 virtual BaseObject* fabricate() = 0; 87 virtual ~BaseFactory() {}; 37 88 }; 38 89 } 39 90 40 #endif 91 #endif /* _Factory_H__ */
Note: See TracChangeset
for help on using the changeset viewer.