| Tekkotsu Homepage | Demos | Overview | Downloads | Dev. Resources | Reference | Credits |
FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT > Class Template ReferenceA class which can track a set of subclass types (with shared base class FamilyT), generating new instances on demand based on some form of identifier (the NameT template parameter). More...
Inheritance diagram for FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >:
![]() Detailed Descriptiontemplate<class FamilyT, typename NameT = std::string, class FactoryBaseT = Factory0Arg<FamilyT>, template< class U > class FactoryT = FactoryBaseT::template Factory>
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Classes | |
| struct | FactoryType |
| allows indirect access to create factory classes More... | |
Public Types | |
| typedef FamilyT | FamilyType |
| allows indirect access to the product family type | |
| typedef NameT | NameType |
| allows indirect access to the product class name type | |
| typedef FactoryBaseT | FactoryBaseType |
| allows indirect access to the factory base class | |
Public Member Functions | |
| FamilyFactory () | |
| default constructor | |
| virtual | ~FamilyFactory () |
| destructor | |
| template<typename N > | |
| void | getTypeNames (std::set< N > &types) const |
| clears types and fills in the currently registered type identifiers | |
| unsigned int | getNumTypes () const |
| returns the number of currently registered type identifiers | |
| template<typename T > | |
| const NameT & | registerType (const NameT &type) |
| creates a factory for the specified type from FactoryT and registers it as type | |
| const NameT & | registerFactory (const NameT &type, FactoryBaseT *f) |
| registers the specified factory for producing objects known by type; FamilyFactory assumes responsibilty for deallocation of f | |
| FamilyT * | create (const NameT &type) const |
| requests a new instance of the specified type be created, without passing any arguments to the factory | |
| template<typename A1 > | |
| FamilyT * | create (const NameT &type, const A1 &a1) const |
| requests a new instance of the specified type be created, passing a single argument to the factory | |
| template<typename A1 , typename A2 > | |
| FamilyT * | create (const NameT &type, const A1 &a1, const A2 &a2) const |
| requests a new instance of the specified type be created, passing two arguments to the factory | |
| template<typename A1 , typename A2 , typename A3 > | |
| FamilyT * | create (const NameT &type, const A1 &a1, const A2 &a2, const A3 &a3) const |
| requests a new instance of the specified type be created, passing three arguments to the factory | |
Static Public Member Functions | |
| static FamilyFactory & | getRegistry () |
| returns a singleton factory for the current template arguments... be careful that clients use the same templates as those used to register | |
Protected Types | |
| typedef std::map< NameT, FactoryBaseT * > | factories_t |
| type of factories | |
Protected Member Functions | |
| FactoryBaseT * | lookupFactory (const NameT &type) const |
| utility function to see if type has been registered and return it, or NULL if not found | |
Protected Attributes | |
| factories_t | factories |
| storage for type identifier to factory mapping | |
typedef std::map<NameT,FactoryBaseT*> FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::factories_t [protected] |
type of factories
Definition at line 90 of file FamilyFactory.h.
| typedef FactoryBaseT FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::FactoryBaseType |
allows indirect access to the factory base class
Reimplemented in InstanceTracker< FamilyT, ClassNameT, FactoryBaseT, FactoryT >.
Definition at line 37 of file FamilyFactory.h.
| typedef FamilyT FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::FamilyType |
allows indirect access to the product family type
Reimplemented in InstanceTracker< FamilyT, ClassNameT, FactoryBaseT, FactoryT >.
Definition at line 33 of file FamilyFactory.h.
| typedef NameT FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::NameType |
allows indirect access to the product class name type
Definition at line 35 of file FamilyFactory.h.
| FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::FamilyFactory | ( | ) |
default constructor
Definition at line 42 of file FamilyFactory.h.
| virtual FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::~FamilyFactory | ( | ) | [virtual] |
destructor
Definition at line 45 of file FamilyFactory.h.
| FamilyT* FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::create | ( | const NameT & | type, | |
| const A1 & | a1, | |||
| const A2 & | a2, | |||
| const A3 & | a3 | |||
| ) | const |
requests a new instance of the specified type be created, passing three arguments to the factory
Note that the factory interface chosen by FactoryBaseT may not actually provide such a call!
Definition at line 83 of file FamilyFactory.h.
| FamilyT* FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::create | ( | const NameT & | type, | |
| const A1 & | a1, | |||
| const A2 & | a2 | |||
| ) | const |
requests a new instance of the specified type be created, passing two arguments to the factory
Note that the factory interface chosen by FactoryBaseT may not actually provide such a call!
Definition at line 78 of file FamilyFactory.h.
| FamilyT* FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::create | ( | const NameT & | type, | |
| const A1 & | a1 | |||
| ) | const |
requests a new instance of the specified type be created, passing a single argument to the factory
Note that the factory interface chosen by FactoryBaseT may not actually provide such a call!
Definition at line 73 of file FamilyFactory.h.
| FamilyT* FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::create | ( | const NameT & | type | ) | const |
requests a new instance of the specified type be created, without passing any arguments to the factory
Note that the factory interface chosen by FactoryBaseT may not actually provide such a call!
Definition at line 68 of file FamilyFactory.h.
| unsigned int FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::getNumTypes | ( | ) | const |
returns the number of currently registered type identifiers
Definition at line 58 of file FamilyFactory.h.
| static FamilyFactory& FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::getRegistry | ( | ) | [static] |
returns a singleton factory for the current template arguments... be careful that clients use the same templates as those used to register
Definition at line 52 of file FamilyFactory.h.
| void FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::getTypeNames | ( | std::set< N > & | types | ) | const |
clears types and fills in the currently registered type identifiers
Definition at line 96 of file FamilyFactory.h.
| FactoryBaseT * FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::lookupFactory | ( | const NameT & | type | ) | const [protected] |
utility function to see if type has been registered and return it, or NULL if not found
Definition at line 114 of file FamilyFactory.h.
Referenced by FamilyFactory< FamilyT, ClassNameT, FactoryBaseT, FactoryT >::create().
| const NameT & FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::registerFactory | ( | const NameT & | type, | |
| FactoryBaseT * | f | |||
| ) |
registers the specified factory for producing objects known by type; FamilyFactory assumes responsibilty for deallocation of f
Definition at line 103 of file FamilyFactory.h.
Referenced by DataEvent< T >::registerDataType(), and FamilyFactory< FamilyT, ClassNameT, FactoryBaseT, FactoryT >::registerType().
| const NameT& FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::registerType | ( | const NameT & | type | ) |
creates a factory for the specified type from FactoryT and registers it as type
Definition at line 61 of file FamilyFactory.h.
Referenced by DataEvent< T >::registerDataType().
factories_t FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::factories [protected] |
storage for type identifier to factory mapping
Definition at line 91 of file FamilyFactory.h.
Referenced by FamilyFactory< FamilyT, ClassNameT, FactoryBaseT, FactoryT >::getNumTypes(), FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::getTypeNames(), FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::lookupFactory(), FamilyFactory< FamilyT, NameT, FactoryBaseT, FactoryT >::registerFactory(), and FamilyFactory< FamilyT, ClassNameT, FactoryBaseT, FactoryT >::~FamilyFactory().
|
Tekkotsu v5.1CVS |
Generated Mon May 9 04:59:07 2016 by Doxygen 1.6.3 |