Implements a generic object Factory.
More...
#include <factory.hpp>
List of all members.
Public Types |
|
typedef IdentifierType | identifier_type |
typedef AbstractProduct | product_type |
typedef ProductCreator | creator_type |
typedef FactoryErrorPolicy
< identifier_type,
product_type > | super |
Detailed Description
template<class AbstractProduct, typename IdentifierType, typename ProductCreator = boost::function<AbstractProduct*()>, template< typename, class > class FactoryErrorPolicy = FactoryDefaultError>
class Feel::Factory< AbstractProduct, IdentifierType, ProductCreator, FactoryErrorPolicy >
Implements a generic object Factory.
- See also:
- FactoryDefaultError, FactoryClone, TypeInfo
- Author:
- Christophe Prud'homme
Member Function Documentation
template<class AbstractProduct , typename IdentifierType , typename ProductCreator = boost::function<AbstractProduct*()>, template< typename, class > class FactoryErrorPolicy = FactoryDefaultError>
product_type* Feel::Factory< AbstractProduct, IdentifierType, ProductCreator, FactoryErrorPolicy >::createObject |
( |
const identifier_type & |
id | ) |
|
|
inline |
Create an object from a product registered in the Factory using identifier id
- Parameters:
-
id | identifier of the product to instantiate |
- Returns:
- the object associate with
id
template<class AbstractProduct , typename IdentifierType , typename ProductCreator = boost::function<AbstractProduct*()>, template< typename, class > class FactoryErrorPolicy = FactoryDefaultError>
bool Feel::Factory< AbstractProduct, IdentifierType, ProductCreator, FactoryErrorPolicy >::registerProduct |
( |
const identifier_type & |
id, |
|
|
creator_type |
creator |
|
) |
| |
|
inline |
Register a product.
A product is composed of an identifier (typically a std::string) and a functor that will create the associated object.
- Parameters:
-
id | identifier for the object to be registered |
creator | the functor that will create the registered object |
- Returns:
- true if registration went fine, false otherwise
template<class AbstractProduct , typename IdentifierType , typename ProductCreator = boost::function<AbstractProduct*()>, template< typename, class > class FactoryErrorPolicy = FactoryDefaultError>
bool Feel::Factory< AbstractProduct, IdentifierType, ProductCreator, FactoryErrorPolicy >::unregisterProduct |
( |
const identifier_type & |
id | ) |
|
|
inline |
Unregister a product
- Parameters:
-
- See also:
- registerProduct
- Returns:
- true if unregistration went fine, false otherwise