Vanetza
 
Loading...
Searching...
No Matches
vanetza::Factory< T, Args > Class Template Reference

#include <factory.hpp>

Public Types

using Result = std::unique_ptr< T >
 
using Function = std::function< Result(Args...)>
 

Public Member Functions

Result create (const std::string &name, Args... args) const
 
Result create (Args... args) const
 
bool add (const std::string &name, Function f)
 
bool configure_default (const std::string &name)
 

Private Types

using map_type = std::map< std::string, Function >
 

Private Attributes

map_type m_functions
 
map_type::const_iterator m_default
 

Detailed Description

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

Factory for a group of classes implementing T

Definition at line 16 of file factory.hpp.

Member Typedef Documentation

◆ Function

template<typename T , typename... Args>
using vanetza::Factory< T, Args >::Function = std::function<Result(Args...)>

Definition at line 20 of file factory.hpp.

◆ map_type

template<typename T , typename... Args>
using vanetza::Factory< T, Args >::map_type = std::map<std::string, Function>
private

Definition at line 77 of file factory.hpp.

◆ Result

template<typename T , typename... Args>
using vanetza::Factory< T, Args >::Result = std::unique_ptr<T>

Definition at line 19 of file factory.hpp.

Constructor & Destructor Documentation

◆ Factory()

template<typename T , typename... Args>
vanetza::Factory< T, Args >::Factory ( )
inline

Definition at line 22 of file factory.hpp.

Member Function Documentation

◆ add()

template<typename T , typename... Args>
bool vanetza::Factory< T, Args >::add ( const std::string &  name,
Function  f 
)
inline

Add an implementation to factory

Parameters
nameof implementation
ffunction creating a new instance of this implementation
Returns
true if added successfully, i.e. no previous addition with same name

Definition at line 60 of file factory.hpp.

◆ configure_default()

template<typename T , typename... Args>
bool vanetza::Factory< T, Args >::configure_default ( const std::string &  name)
inline

Set default implementation

Parameters
nameselected default implementation
Returns
true if an implementation exists with selected name

Definition at line 70 of file factory.hpp.

◆ create() [1/2]

template<typename T , typename... Args>
Result vanetza::Factory< T, Args >::create ( Args...  args) const
inline

Create object using default implementation

Returns
created instance or nullptr if no default is configured

Definition at line 45 of file factory.hpp.

◆ create() [2/2]

template<typename T , typename... Args>
Result vanetza::Factory< T, Args >::create ( const std::string &  name,
Args...  args 
) const
inline

Create an instance of T using a named implementation

Parameters
nameof wanted implementation
Returns
created instance or nullptr if not found

Definition at line 31 of file factory.hpp.

Member Data Documentation

◆ m_default

template<typename T , typename... Args>
map_type::const_iterator vanetza::Factory< T, Args >::m_default
private

Definition at line 79 of file factory.hpp.

◆ m_functions

template<typename T , typename... Args>
map_type vanetza::Factory< T, Args >::m_functions
private

Definition at line 78 of file factory.hpp.


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