1 #ifndef art_Framework_Core_ModuleMacros_h 2 #define art_Framework_Core_ModuleMacros_h 29 #include <type_traits> 41 template <
typename T,
typename =
void>
43 using type = fhicl::ParameterSet;
48 using type =
typename T::Parameters;
54 template <
typename T,
typename Config>
67 #define DEFINE_ART_MODULE(klass) \ 69 CET_PROVIDE_FILE_PATH() \ 70 FHICL_PROVIDE_ALLOWED_CONFIGURATION(klass) \ 72 make_module(fhicl::ParameterSet const& pset, \ 73 art::ProcessingFrame const& frame) \ 76 art::detail::Config<klass> const& config{pset}; \ 77 return art::detail::make_module<klass>(config, frame); \ 80 make_worker_from_module(std::shared_ptr<art::ModuleBase> mod, \ 81 art::ModuleDescription const& md, \ 82 art::WorkerParams const& wp) \ 84 return new klass::WorkerType( \ 85 std::dynamic_pointer_cast<klass::ModuleType>(mod), md, wp); \ 90 return art::detail::ModuleTypeDeducer<klass::ModuleType>::value; \ 92 art::ModuleThreadingType \ 93 moduleThreadingType() \ 95 return art::detail::ModuleThreadingTypeDeducer<klass::ModuleType>::value; \
ModuleBase *(fhicl::ParameterSet const &, ProcessingFrame const &) ModuleMaker_t
Worker *(WorkerParams const &, ModuleDescription const &) WorkerMaker_t
ModuleType( ModuleTypeFunc_t)
T * make_module(Config const &config, ProcessingFrame const &frame)
ModuleThreadingType( ModuleThreadingTypeFunc_t)
Worker *(std::shared_ptr< ModuleBase >, ModuleDescription const &, WorkerParams const &) WorkerFromModuleMaker_t