Feel++ 0.91.0

Feel::Factory< AbstractProduct, IdentifierType, ProductCreator, FactoryErrorPolicy > Class Template Reference

Implements a generic object Factory. More...

#include <factory.hpp>

List of all members.

Public Types

Typedefs
typedef IdentifierType identifier_type
typedef AbstractProduct product_type
typedef ProductCreator creator_type
typedef FactoryErrorPolicy
< identifier_type,
product_type > 
super

Public Member Functions

Methods
bool registerProduct (const identifier_type &id, creator_type creator)
bool unregisterProduct (const identifier_type &id)
product_type * createObject (const identifier_type &id)

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:
ididentifier 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:
ididentifier for the object to be registered
creatorthe 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:
id
See also:
registerProduct
Returns:
true if unregistration went fine, false otherwise