LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
BasicPluginMacros.h
Go to the documentation of this file.
1 #ifndef art_Utilities_BasicPluginMacros_h
2 #define art_Utilities_BasicPluginMacros_h
3 // PluginMacros
5 //
6 // Define the macros DEFINE_BASIC_PLUGIN and a required component
7 // DEFINE_BASIC_PLUGIN_MAKER. These are intended for others to use for
8 // specific plugin types, like art::FileCatalogMetadataPlugin (see
9 // art/Framework/Core/FileCatalogMetadataPlugin.h).
10 //
11 // See also the definition of DEFINE_BASIC_PLUGINTYPE_FUNC in
12 // cetlib/PluginTypeDeducer.h.
13 //
15 
16 #include "cetlib/PluginTypeDeducer.h"
17 #include "cetlib/compiler_macros.h"
18 #include "fhiclcpp/ParameterSet.h"
19 
20 #include <memory>
21 #include <string>
22 
23 #define DEFINE_BASIC_PLUGIN_MAKER(klass, base) \
24  EXTERN_C_FUNC_DECLARE_START \
25  std::unique_ptr<base> makePlugin(fhicl::ParameterSet const& pset) \
26  { \
27  return std::make_unique<klass>(pset); \
28  } \
29  EXTERN_C_FUNC_DECLARE_END
30 
31 #define DEFINE_BASIC_PLUGIN(klass, base) \
32  DEFINE_BASIC_PLUGIN_MAKER(klass, base) \
33  DEFINE_BASIC_PLUGINTYPE_FUNC(base)
34 
35 #endif /* art_Utilities_BasicPluginMacros_h */
36 
37 // Local Variables:
38 // mode: c++
39 // End: