Loading [MathJax]/extensions/tex2jax.js
Go to the documentation of this file.
11 #ifndef _GAUDI_PLUGIN_SERVICE_V1_H_
12 #define _GAUDI_PLUGIN_SERVICE_V1_H_
22 #define _PS_V1_DECLARE_FACTORY_WITH_ID( type, id, factory ) \
23 _PS_V1_INTERNAL_DECLARE_FACTORY( type, id, factory, __LINE__ )
25 #define _PS_V1_DECLARE_FACTORY( type, factory ) \
26 _PS_V1_DECLARE_FACTORY_WITH_ID( type, ::Gaudi::PluginService::v1::Details::demangle<type>(), factory )
28 #define _PS_V1_DECLARE_FACTORY_WITH_CREATOR_AND_ID( type, typecreator, id, factory ) \
29 _PS_V1_INTERNAL_DECLARE_FACTORY_WITH_CREATOR( type, typecreator, id, factory, __LINE__ )
31 #define _PS_V1_DECLARE_FACTORY_WITH_CREATOR( type, typecreator, factory ) \
32 _PS_V1_DECLARE_FACTORY_WITH_CREATOR_AND_ID( type, typecreator, \
33 ::Gaudi::PluginService::v1::Details::demangle<type>(), factory )
35 #define _PS_V1_DECLARE_COMPONENT( type ) _PS_V1_DECLARE_FACTORY( type, type::Factory )
37 #define _PS_V1_DECLARE_COMPONENT_WITH_ID( type, id ) _PS_V1_DECLARE_FACTORY_WITH_ID( type, id, type::Factory )
39 #if !GAUDI_PLUGIN_SERVICE_USE_V2
40 # define DECLARE_FACTORY_WITH_ID( type, id, factory ) _PS_V1_DECLARE_FACTORY_WITH_ID( type, id, factory )
41 # define DECLARE_FACTORY( type, factory ) _PS_V1_DECLARE_FACTORY( type, factory )
42 # define DECLARE_FACTORY_WITH_CREATOR_AND_ID( type, typecreator, id, factory ) \
43 _PS_V1_DECLARE_FACTORY_WITH_CREATOR_AND_ID( type, typecreator, id, factory )
44 # define DECLARE_FACTORY_WITH_CREATOR( type, typecreator, factory ) \
45 _PS_V1_DECLARE_FACTORY_WITH_CREATOR( type, typecreator, factory )
46 # define DECLARE_COMPONENT( type ) _PS_V1_DECLARE_COMPONENT( type )
47 # define DECLARE_COMPONENT_WITH_ID( type, id ) _PS_V1_DECLARE_COMPONENT_WITH_ID( type, id )
51 namespace PluginService {
54 template <
typename R,
typename... Args>
61 const FuncType c = Details::getCreator<FuncType>(
id );
62 return c ? ( *c )( std::forward<Args>(
args )... ) : 0;
77 const char* what()
const throw()
override;
86 #endif //_GAUDI_PLUGIN_SERVICE_H_
static ReturnType create(const std::string &id, Args... args)
Class wrapping the signature for a factory with any number of arguments.
This file provides a Grammar for the type Gaudi::Accumulators::Axis It allows to use that type from p...
#define GAUDI_PLUGIN_SERVICE_V1_INLINE
R(* FuncType)(Args &&...)
static ReturnType create(const T &id, Args... args)