libMesh
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Private Member Functions | List of all members
libMesh::FactoryImp< Derived, Base > Class Template Reference

Factory implementation class. More...

#include <factory.h>

Inheritance diagram for libMesh::FactoryImp< Derived, Base >:
[legend]

Public Member Functions

 FactoryImp (const std::string &name)
 Constructor.
 
 ~FactoryImp ()=default
 Destructor.
 

Static Public Member Functions

static std::unique_ptr< Base > build (const std::string &name)
 Builds an object of type Base identified by name.
 

Protected Member Functions

std::map< std::string, Factory< FunctionBase< Number > > * > & factory_map ()
 
std::map< std::string, Factory< FunctionBase< Number > > * > & factory_map ()
 
std::map< std::string, Factory< Partitioner > * > & factory_map ()
 

Static Protected Member Functions

static std::map< std::string, Factory< Base > * > & factory_map ()
 Map from a name to a Factory<Base> * pointer.
 

Private Member Functions

virtual std::unique_ptr< Base > create () override
 

Detailed Description

template<class Derived, class Base>
class libMesh::FactoryImp< Derived, Base >

Factory implementation class.

Definition at line 88 of file factory.h.

Constructor & Destructor Documentation

◆ FactoryImp()

template<class Derived , class Base >
libMesh::FactoryImp< Derived, Base >::FactoryImp ( const std::string &  name)
inline

Constructor.

Takes a name as input.

Definition at line 95 of file factory.h.

95: Factory<Base>(name) { }

◆ ~FactoryImp()

template<class Derived , class Base >
libMesh::FactoryImp< Derived, Base >::~FactoryImp ( )
default

Destructor.

Empty.

Member Function Documentation

◆ build()

template<class Base >
std::unique_ptr< Base > libMesh::Factory< Base >::build ( const std::string &  name)
inlinestaticinherited

Builds an object of type Base identified by name.

Definition at line 129 of file factory.h.

130{
131 // name not found in the map
132 if (!factory_map().count(name))
133 {
134 libMesh::err << "Tried to build an unknown type: " << name << std::endl;
135
136 libMesh::err << "valid options are:" << std::endl;
137
138 for (const auto & pr : factory_map())
139 libMesh::err << " " << pr.first << std::endl;
140
141 libmesh_error_msg("Exiting...");
142 }
143
144 Factory<Base> * f = factory_map()[name];
145 return std::unique_ptr<Base>(f->create());
146}
static std::map< std::string, Factory< Base > * > & factory_map()
Map from a name to a Factory<Base> * pointer.
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
The libMesh namespace provides an interface to certain functionality in the library.
OStreamProxy err

References libMesh::Factory< Base >::create(), and libMesh::err.

Referenced by main().

◆ create()

template<class Derived , class Base >
std::unique_ptr< Base > libMesh::FactoryImp< Derived, Base >::create ( )
inlineoverrideprivatevirtual
Returns
A new object of type Derived.

Implements libMesh::Factory< Base >.

Definition at line 152 of file factory.h.

153{
154 return std::make_unique<Derived>();
155}

◆ factory_map() [1/4]

std::map< std::string, Factory< FunctionBase< Number > > * > & libMesh::Factory< FunctionBase< Number > >::factory_map ( )
protectedinherited

Definition at line 64 of file factoryfunction.C.

65{
66 static std::map<std::string, Factory<FunctionBase<Number>> *> _map;
67 return _map;
68}

◆ factory_map() [2/4]

std::map< std::string, Factory< FunctionBase< Number > > * > & libMesh::Factory< FunctionBase< Number > >::factory_map ( )
protectedinherited

Definition at line 64 of file factoryfunction.C.

65{
66 static std::map<std::string, Factory<FunctionBase<Number>> *> _map;
67 return _map;
68}

◆ factory_map() [3/4]

template<class Base >
static std::map< std::string, Factory< Base > * > & libMesh::Factory< Base >::factory_map ( )
staticprotectedinherited

Map from a name to a Factory<Base> * pointer.

◆ factory_map() [4/4]

std::map< std::string, Factory< Partitioner > * > & libMesh::Factory< Partitioner >::factory_map ( )
protectedinherited

Definition at line 38 of file partitioner_factory.C.

39{
40 static std::map<std::string, Factory<Partitioner> *> _map;
41 return _map;
42}

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