CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Factory.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_Factory_h
2 #define FWCore_Framework_Factory_h
3 
8 
9 #include <map>
10 #include <string>
11 #include <memory>
14 
15 namespace edm {
17 
18  class Factory
19  {
20  public:
21  typedef std::map<std::string, edm::propagate_const<Maker*>> MakerMap;
22 
23  ~Factory();
24 
25  static Factory const* get();
26 
27  std::shared_ptr<maker::ModuleHolder> makeModule(const MakeModuleParams&,
28  signalslot::Signal<void(const ModuleDescription&)>& pre,
29  signalslot::Signal<void(const ModuleDescription&)>& post) const;
30 
31  std::shared_ptr<maker::ModuleHolder> makeReplacementModule(const edm::ParameterSet&) const;
32 
33 
34  private:
35  Factory();
36  Maker* findMaker(const MakeModuleParams& p) const;
37  static Factory const singleInstance_;
38  mutable MakerMap makers_;
39  };
40 
41 }
42 #endif
std::shared_ptr< maker::ModuleHolder > makeReplacementModule(const edm::ParameterSet &) const
Definition: Factory.cc:77
std::map< std::string, edm::propagate_const< Maker * > > MakerMap
Definition: Factory.h:21
Maker * findMaker(const MakeModuleParams &p) const
Definition: Factory.cc:34
std::shared_ptr< maker::ModuleHolder > makeModule(const MakeModuleParams &, signalslot::Signal< void(const ModuleDescription &)> &pre, signalslot::Signal< void(const ModuleDescription &)> &post) const
Definition: Factory.cc:68
static Factory const singleInstance_
Definition: Factory.h:37
edmplugin::PluginFactory< Maker *()> MakerPluginFactory
Definition: Factory.h:16
MakerMap makers_
Definition: Factory.h:38