CHROMA
Public Types | Public Member Functions | Private Types | Private Attributes | List of all members
Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy > Class Template Reference

Object factory class. More...

#include <objfactory.h>

Inheritance diagram for Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >:
Chroma::DefaultFactoryError< IdentifierType, AbstractProduct >

Public Types

typedef TList ParmList
 
typedef TL::TypeAtNonStrict< ParmList, 0, NullType >::Result Parm1
 
typedef TL::TypeAtNonStrict< ParmList, 1, NullType >::Result Parm2
 
typedef TL::TypeAtNonStrict< ParmList, 2, NullType >::Result Parm3
 
typedef TL::TypeAtNonStrict< ParmList, 3, NullType >::Result Parm4
 
typedef TL::TypeAtNonStrict< ParmList, 4, NullType >::Result Parm5
 
typedef TL::TypeAtNonStrict< ParmList, 5, NullType >::Result Parm6
 
typedef TL::TypeAtNonStrict< ParmList, 6, NullType >::Result Parm7
 
typedef TL::TypeAtNonStrict< ParmList, 7, NullType >::Result Parm8
 
typedef TL::TypeAtNonStrict< ParmList, 8, NullType >::Result Parm9
 

Public Member Functions

bool registerObject (const IdentifierType &id, ProductCreator creator)
 Register the object. More...
 
bool unregisterObject (const IdentifierType &id)
 Unregister the object. More...
 
AbstractProduct * createObject (const IdentifierType &id)
 Create the object. More...
 
AbstractProduct * createObject (const IdentifierType &id, Parm1 p1)
 Create the object. More...
 
AbstractProduct * createObject (const IdentifierType &id, Parm1 p1, Parm2 p2)
 
AbstractProduct * createObject (const IdentifierType &id, Parm1 p1, Parm2 p2, Parm3 p3)
 
AbstractProduct * createObject (const IdentifierType &id, Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4)
 
AbstractProduct * createObject (const IdentifierType &id, Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5)
 
AbstractProduct * createObject (const IdentifierType &id, Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5, Parm6 p6)
 
AbstractProduct * createObject (const IdentifierType &id, Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5, Parm6 p6, Parm7 p7)
 
AbstractProduct * createObject (const IdentifierType &id, Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5, Parm6 p6, Parm7 p7, Parm8 p8)
 

Private Types

typedef std::map< IdentifierType, ProductCreator > IdToProductMap
 

Private Attributes

IdToProductMap associations_
 

Additional Inherited Members

- Static Public Member Functions inherited from Chroma::DefaultFactoryError< IdentifierType, AbstractProduct >
static AbstractProduct * OnUnknownType (const IdentifierType &id)
 

Detailed Description

template<class AbstractProduct, typename IdentifierType, class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
class Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >

Object factory class.

Supports abstract creation of objects

Definition at line 81 of file objfactory.h.

Member Typedef Documentation

◆ IdToProductMap

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
typedef std::map<IdentifierType, ProductCreator> Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::IdToProductMap
private

Definition at line 317 of file objfactory.h.

◆ Parm1

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
typedef TL::TypeAtNonStrict<ParmList,0,NullType>::Result Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::Parm1

Definition at line 86 of file objfactory.h.

◆ Parm2

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
typedef TL::TypeAtNonStrict<ParmList,1,NullType>::Result Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::Parm2

Definition at line 87 of file objfactory.h.

◆ Parm3

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
typedef TL::TypeAtNonStrict<ParmList,2,NullType>::Result Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::Parm3

Definition at line 88 of file objfactory.h.

◆ Parm4

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
typedef TL::TypeAtNonStrict<ParmList,3,NullType>::Result Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::Parm4

Definition at line 89 of file objfactory.h.

◆ Parm5

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
typedef TL::TypeAtNonStrict<ParmList,4,NullType>::Result Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::Parm5

Definition at line 90 of file objfactory.h.

◆ Parm6

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
typedef TL::TypeAtNonStrict<ParmList,5,NullType>::Result Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::Parm6

Definition at line 91 of file objfactory.h.

◆ Parm7

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
typedef TL::TypeAtNonStrict<ParmList,6,NullType>::Result Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::Parm7

Definition at line 92 of file objfactory.h.

◆ Parm8

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
typedef TL::TypeAtNonStrict<ParmList,7,NullType>::Result Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::Parm8

Definition at line 93 of file objfactory.h.

◆ Parm9

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
typedef TL::TypeAtNonStrict<ParmList,8,NullType>::Result Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::Parm9

Definition at line 94 of file objfactory.h.

◆ ParmList

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
typedef TList Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::ParmList

Definition at line 85 of file objfactory.h.

Member Function Documentation

◆ createObject() [1/9]

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
AbstractProduct* Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::createObject ( const IdentifierType &  id)
inline

◆ createObject() [2/9]

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
AbstractProduct* Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::createObject ( const IdentifierType &  id,
Parm1  p1 
)
inline

Create the object.

Parameters
idobject id
p1first parameter arg to callback
Returns
returns pointer to the object

Definition at line 150 of file objfactory.h.

References Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::associations_, Chroma::i, j, and Chroma::DefaultFactoryError< IdentifierType, AbstractProduct >::OnUnknownType().

◆ createObject() [3/9]

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
AbstractProduct* Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::createObject ( const IdentifierType &  id,
Parm1  p1,
Parm2  p2 
)
inline

◆ createObject() [4/9]

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
AbstractProduct* Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::createObject ( const IdentifierType &  id,
Parm1  p1,
Parm2  p2,
Parm3  p3 
)
inline

◆ createObject() [5/9]

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
AbstractProduct* Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::createObject ( const IdentifierType &  id,
Parm1  p1,
Parm2  p2,
Parm3  p3,
Parm4  p4 
)
inline

◆ createObject() [6/9]

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
AbstractProduct* Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::createObject ( const IdentifierType &  id,
Parm1  p1,
Parm2  p2,
Parm3  p3,
Parm4  p4,
Parm5  p5 
)
inline

◆ createObject() [7/9]

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
AbstractProduct* Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::createObject ( const IdentifierType &  id,
Parm1  p1,
Parm2  p2,
Parm3  p3,
Parm4  p4,
Parm5  p5,
Parm6  p6 
)
inline

◆ createObject() [8/9]

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
AbstractProduct* Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::createObject ( const IdentifierType &  id,
Parm1  p1,
Parm2  p2,
Parm3  p3,
Parm4  p4,
Parm5  p5,
Parm6  p6,
Parm7  p7 
)
inline

◆ createObject() [9/9]

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
AbstractProduct* Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::createObject ( const IdentifierType &  id,
Parm1  p1,
Parm2  p2,
Parm3  p3,
Parm4  p4,
Parm5  p5,
Parm6  p6,
Parm7  p7,
Parm8  p8 
)
inline

◆ registerObject()

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
bool Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::registerObject ( const IdentifierType &  id,
ProductCreator  creator 
)
inline

Register the object.

Parameters
idobject id
creatorthe callback function to create the object
Returns
returns true if registration successful

Definition at line 103 of file objfactory.h.

References Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::associations_.

◆ unregisterObject()

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
bool Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::unregisterObject ( const IdentifierType &  id)
inline

Unregister the object.

Parameters
idobject id
Returns
returns true if object name was registered before

Definition at line 114 of file objfactory.h.

References Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::associations_.

Member Data Documentation

◆ associations_

template<class AbstractProduct , typename IdentifierType , class TList = NullType, typename ProductCreator = AbstractProduct* (*)(), template< typename, class > class FactoryErrorPolicy = DefaultFactoryError>
IdToProductMap Chroma::ObjectFactory< AbstractProduct, IdentifierType, TList, ProductCreator, FactoryErrorPolicy >::associations_
private

The documentation for this class was generated from the following file: