PLCnext API Documentation  22.9.0.33
Public Types | Public Member Functions | List of all members
Arp::System::Commons::Extensibility::ModuleFactory< TModuleInterface > Class Template Reference

Factory class for extension modules More...

#include <ModuleFactory.hxx>

Public Types

using ModuleInterfacePtr = std::unique_ptr< TModuleInterface >
 
using FactoryFunction = std::function< ModuleInterfacePtr()>
 
using FactoryFunctions = std::vector< std::pair< String, FactoryFunction > >
 

Public Member Functions

 ModuleFactory (void)=default
 Constructs an ModuleFactory instance. More...
 
 ModuleFactory (const ModuleFactory &arg)=default
 Copy constructor. More...
 
 ModuleFactory (ModuleFactory &&arg) noexcept=default
 Move constructor. More...
 
ModuleFactoryoperator= (const ModuleFactory &arg)=default
 Copy-assignment operator. More...
 
ModuleFactoryoperator= (ModuleFactory &&arg) noexcept=default
 Move-assignment operator. More...
 
virtual ~ModuleFactory (void) noexcept=default
 Destructs this instance and frees all resources. More...
 
ModuleInterfacePtr Create (const String &moduleName) const
 Creates a module instance More...
 
std::vector< StringGetModuleNames () const
 Returns all known module names More...
 
void AddFactoryFunction (const String &moduleName, FactoryFunction function)
 Adds a factory function More...
 

Detailed Description

template<typename TModuleInterface>
class Arp::System::Commons::Extensibility::ModuleFactory< TModuleInterface >

Factory class for extension modules

Template Parameters
TModuleInterfaceType of the base class for the modules

This class is used as an internal factory used by the ModuleLibraryBase.

Constructor & Destructor Documentation

◆ ModuleFactory() [1/3]

template<typename TModuleInterface >
Arp::System::Commons::Extensibility::ModuleFactory< TModuleInterface >::ModuleFactory ( void  )
default

Constructs an ModuleFactory instance.

◆ ModuleFactory() [2/3]

template<typename TModuleInterface >
Arp::System::Commons::Extensibility::ModuleFactory< TModuleInterface >::ModuleFactory ( const ModuleFactory< TModuleInterface > &  arg)
default

Copy constructor.

◆ ModuleFactory() [3/3]

template<typename TModuleInterface >
Arp::System::Commons::Extensibility::ModuleFactory< TModuleInterface >::ModuleFactory ( ModuleFactory< TModuleInterface > &&  arg)
defaultnoexcept

Move constructor.

◆ ~ModuleFactory()

template<typename TModuleInterface >
virtual Arp::System::Commons::Extensibility::ModuleFactory< TModuleInterface >::~ModuleFactory ( void  )
virtualdefaultnoexcept

Destructs this instance and frees all resources.

Member Function Documentation

◆ AddFactoryFunction()

template<typename TModuleInterface >
void Arp::System::Commons::Extensibility::ModuleFactory< TModuleInterface >::AddFactoryFunction ( const String moduleName,
FactoryFunction  function 
)

Adds a factory function

Parameters
moduleNameName of the module, typically the common type name
functionFunction pointer to the factory function

Throws an exception if the name is already present.

◆ Create()

template<typename TModuleInterface >
ModuleFactory< TModuleInterface >::ModuleInterfacePtr Arp::System::Commons::Extensibility::ModuleFactory< TModuleInterface >::Create ( const String moduleName) const

Creates a module instance

Parameters
moduleNameName of the module, typically the common type name
Returns
std::unique_ptr to the created module, nullptr if the was no factory function with the given name

◆ GetModuleNames()

template<typename TModuleInterface >
std::vector< String > Arp::System::Commons::Extensibility::ModuleFactory< TModuleInterface >::GetModuleNames

Returns all known module names

◆ operator=() [1/2]

template<typename TModuleInterface >
ModuleFactory& Arp::System::Commons::Extensibility::ModuleFactory< TModuleInterface >::operator= ( const ModuleFactory< TModuleInterface > &  arg)
default

Copy-assignment operator.

◆ operator=() [2/2]

template<typename TModuleInterface >
ModuleFactory& Arp::System::Commons::Extensibility::ModuleFactory< TModuleInterface >::operator= ( ModuleFactory< TModuleInterface > &&  arg)
defaultnoexcept

Move-assignment operator.


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