Cantera  2.4.0
Public Member Functions | Protected Attributes | List of all members
Factory< T, Args > Class Template Reference

Factory class that supports registering functions to create objects. More...

#include <FactoryBase.h>

Inheritance diagram for Factory< T, Args >:
[legend]
Collaboration diagram for Factory< T, Args >:
[legend]

Public Member Functions

T * create (std::string name, Args... args)
 Create an object using the object construction function corresponding to "name" and the provided constructor arguments. More...
 
void reg (const std::string &name, std::function< T *(Args...)> f)
 Register a new object construction function. More...
 
- Public Member Functions inherited from FactoryBase
virtual ~FactoryBase ()
 destructor More...
 

Protected Attributes

std::unordered_map< std::string, std::function< T *(Args...)> > m_creators
 
std::unordered_map< std::string, std::string > m_synonyms
 Map of synonyms to canonical names. More...
 
std::unordered_map< std::string, std::string > m_deprecated_names
 Map of deprecated synonyms to canonical names. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from FactoryBase
static void deleteFactories ()
 static function that deletes all factories in the internal registry maintained in a static variable More...
 
- Protected Member Functions inherited from FactoryBase
 FactoryBase ()
 Constructor. More...
 
virtual void deleteFactory ()=0
 Virtual abstract function that deletes the factory. More...
 

Detailed Description

template<class T, typename ... Args>
class Cantera::Factory< T, Args >

Factory class that supports registering functions to create objects.

Template arguments for the class are the base type created by the factory, followed by the types of any arguments which need to be passed to the functions used to create objects, e.g. arguments to the constructor.

Definition at line 71 of file FactoryBase.h.

Member Function Documentation

◆ create()

T* create ( std::string  name,
Args...  args 
)
inline

Create an object using the object construction function corresponding to "name" and the provided constructor arguments.

Definition at line 77 of file FactoryBase.h.

Referenced by Cantera::newThermoPhase().

◆ reg()

void reg ( const std::string &  name,
std::function< T *(Args...)>  f 
)
inline

Register a new object construction function.

Definition at line 94 of file FactoryBase.h.

Member Data Documentation

◆ m_synonyms

std::unordered_map<std::string, std::string> m_synonyms
protected

Map of synonyms to canonical names.

Definition at line 102 of file FactoryBase.h.

◆ m_deprecated_names

std::unordered_map<std::string, std::string> m_deprecated_names
protected

Map of deprecated synonyms to canonical names.

Use of these names will show a deprecation warning.

Definition at line 106 of file FactoryBase.h.


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