35 #ifndef OPENMS_CONCEPT_FACTORY_H
36 #define OPENMS_CONCEPT_FACTORY_H
61 template <
typename FactoryProduct>
69 typedef FactoryProduct * (*FunctionType)();
70 typedef std::map<String, FunctionType>
Map;
99 FactoryProduct::registerChildren();
118 return (*(it->second))();
122 throw Exception::InvalidValue(__FILE__, __LINE__, __PRETTY_FUNCTION__,
"This FactoryProduct is not registered!", name.c_str());
150 std::vector<String> list;
153 list.push_back(it->first);
164 template <
typename FactoryProduct>
168 #endif //OPENMS_CONCEPT_FACTORY_H
static bool isRegistered(String name)
Returns if a factory is registered.
Definition: SingletonRegistry.h:109
A more convenient string class.
Definition: String.h:56
Factory< FactoryProduct > FactoryType
Definition: Factory.h:72
static Factory * instance_()
singleton access to Factory
Definition: Factory.h:83
FactoryProduct *(* FunctionType)()
Function signature of creator function.
Definition: Factory.h:69
Returns FactoryProduct* based on the name of the desired concrete FactoryProduct. ...
Definition: Factory.h:62
static void registerProduct(const String &name, const FunctionType creator)
register new concrete FactoryProduct
Definition: Factory.h:132
static bool isRegistered(const String &name)
Returns if a factory product is registered.
Definition: Factory.h:138
static Factory * instance_ptr_
Definition: Factory.h:161
static FactoryProduct * create(const String &name)
return FactoryProduct according to unique identifier name
Definition: Factory.h:113
Factory()
Constructor.
Definition: Factory.h:78
virtual ~Factory()
Destructor.
Definition: Factory.h:75
Base class for Factory<T>
Definition: FactoryBase.h:49
static FactoryBase * getFactory(const String &name)
return DefaultParamHandler according to unique identifier name
Definition: SingletonRegistry.h:84
Invalid value exception.
Definition: Exception.h:336
static std::vector< String > registeredProducts()
Returns a list of registered products.
Definition: Factory.h:148
friend class singletonsNeedNoFriends
Definition: Factory.h:65
Map inventory_
Definition: Factory.h:160
Map::const_iterator MapIterator
Definition: Factory.h:71
std::map< String, FunctionType > Map
Definition: Factory.h:70
static void registerFactory(const String &name, FactoryBase *instance)
register new concrete Factory
Definition: SingletonRegistry.h:103