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>
60 const FuncType c = Details::getCreator<FuncType>(
id );
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;