00001 #ifndef artdaq_Plugins_MetricMacros_hh
00002 #define artdaq_Plugins_MetricMacros_hh
00003
00004 #include "artdaq-utilities/Plugins/MetricPlugin.hh"
00005 #include "fhiclcpp/fwd.h"
00006
00007 #include "cetlib/compiler_macros.h"
00008
00009 #include <memory>
00010
00011 namespace artdaq
00012 {
00019 typedef std::unique_ptr<artdaq::MetricPlugin> makeFunc_t(fhicl::ParameterSet const& ps, std::string const& app_name);
00020 }
00021
00022 #ifndef EXTERN_C_FUNC_DECLARE_START
00023 #define EXTERN_C_FUNC_DECLARE_START extern "C" {
00024 #endif
00025
00026 #define DEFINE_ARTDAQ_METRIC(klass) \
00027 EXTERN_C_FUNC_DECLARE_START \
00028 std::unique_ptr<artdaq::MetricPlugin> \
00029 make(fhicl::ParameterSet const & ps, std::string const& app_name) { \
00030 return std::unique_ptr<artdaq::MetricPlugin>(new klass(ps, app_name)); \
00031 }}
00032
00033
00034 #endif