21#define _PS_V1_DECLARE_FACTORY_WITH_ID( type, id, factory ) \
22 _PS_V1_INTERNAL_DECLARE_FACTORY( type, id, factory, __LINE__ )
24#define _PS_V1_DECLARE_FACTORY( type, factory ) \
25 _PS_V1_DECLARE_FACTORY_WITH_ID( type, ::Gaudi::PluginService::v1::Details::demangle<type>(), factory )
27#define _PS_V1_DECLARE_FACTORY_WITH_CREATOR_AND_ID( type, typecreator, id, factory ) \
28 _PS_V1_INTERNAL_DECLARE_FACTORY_WITH_CREATOR( type, typecreator, id, factory, __LINE__ )
30#define _PS_V1_DECLARE_FACTORY_WITH_CREATOR( type, typecreator, factory ) \
31 _PS_V1_DECLARE_FACTORY_WITH_CREATOR_AND_ID( type, typecreator, \
32 ::Gaudi::PluginService::v1::Details::demangle<type>(), factory )
34#define _PS_V1_DECLARE_COMPONENT( type ) _PS_V1_DECLARE_FACTORY( type, type::Factory )
36#define _PS_V1_DECLARE_COMPONENT_WITH_ID( type, id ) _PS_V1_DECLARE_FACTORY_WITH_ID( type, id, type::Factory )
38#if !GAUDI_PLUGIN_SERVICE_USE_V2
39# define DECLARE_FACTORY_WITH_ID( type, id, factory ) _PS_V1_DECLARE_FACTORY_WITH_ID( type, id, factory )
40# define DECLARE_FACTORY( type, factory ) _PS_V1_DECLARE_FACTORY( type, factory )
41# define DECLARE_FACTORY_WITH_CREATOR_AND_ID( type, typecreator, id, factory ) \
42 _PS_V1_DECLARE_FACTORY_WITH_CREATOR_AND_ID( type, typecreator, id, factory )
43# define DECLARE_FACTORY_WITH_CREATOR( type, typecreator, factory ) \
44 _PS_V1_DECLARE_FACTORY_WITH_CREATOR( type, typecreator, factory )
45# define DECLARE_COMPONENT( type ) _PS_V1_DECLARE_COMPONENT( type )
46# define DECLARE_COMPONENT_WITH_ID( type, id ) _PS_V1_DECLARE_COMPONENT_WITH_ID( type, id )
50 namespace PluginService {
53 template <
typename R,
typename... Args>
61 return c ? ( *c )( std::forward<Args>( args )... ) : 0;
68 return create( o.str(), std::forward<Args>( args )... );
76 const char*
what()
const throw()
override;
#define GAUDI_PLUGIN_SERVICE_V1_INLINE
const char * what() const override
Exception(std::string msg)
Class wrapping the signature for a factory with any number of arguments.
static ReturnType create(const T &id, Args... args)
R(* FuncType)(Args &&...)
static ReturnType create(const std::string &id, Args... args)
GAUDIPS_API void * getCreator(const std::string &id, const std::string &type)
Function used to load a specific factory function.
This file provides a Grammar for the type Gaudi::Accumulators::Axis It allows to use that type from p...