CMS 3D CMS Logo

ModuleRegistry.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: FWCore/Framework
4 // Class : edm::ModuleRegistry
5 //
6 // Implementation:
7 // [Notes on implementation]
8 //
9 // Original Author: Chris Jones
10 // Created: Fri, 23 Aug 2013 16:39:58 GMT
11 //
12 
13 // system include files
14 
15 // user include files
18 
19 namespace edm {
20  std::shared_ptr<maker::ModuleHolder> ModuleRegistry::getModule(
21  MakeModuleParams const& p,
22  std::string const& moduleLabel,
23  signalslot::Signal<void(ModuleDescription const&)>& iPre,
24  signalslot::Signal<void(ModuleDescription const&)>& iPost) {
25  auto modItr = labelToModule_.find(moduleLabel);
26  if (modItr == labelToModule_.end()) {
27  auto modPtr = Factory::get()->makeModule(p, iPre, iPost);
28 
29  // Transfer ownership of worker to the registry
30  labelToModule_[moduleLabel] = modPtr;
31  return modPtr;
32  }
33  return get_underlying_safe(modItr->second);
34  }
35 
37  edm::ParameterSet const& iPSet,
38  edm::PreallocationConfiguration const& iPrealloc) {
39  auto modItr = labelToModule_.find(iModuleLabel);
40  if (modItr == labelToModule_.end()) {
41  return nullptr;
42  }
43 
44  auto modPtr = Factory::get()->makeReplacementModule(iPSet);
45  modPtr->setModuleDescription(modItr->second->moduleDescription());
46  modPtr->preallocate(iPrealloc);
47 
48  // Transfer ownership of worker to the registry
49  modItr->second = modPtr;
50  return modItr->second.get();
51  }
52 } // namespace edm
edm
HLT enums.
Definition: AlignableModifier.h:19
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
edm::MakeModuleParams
Definition: MakeModuleParams.h:21
edm::maker::ModuleHolder
Definition: ModuleHolder.h:37
edm::Factory::makeReplacementModule
std::shared_ptr< maker::ModuleHolder > makeReplacementModule(const edm::ParameterSet &) const
Definition: Factory.cc:64
edm::ModuleDescription
Definition: ModuleDescription.h:21
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::get_underlying_safe
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
Definition: get_underlying_safe.h:40
edm::ParameterSet
Definition: ParameterSet.h:36
edm::ModuleRegistry::labelToModule_
std::map< std::string, edm::propagate_const< std::shared_ptr< maker::ModuleHolder > > > labelToModule_
Definition: ModuleRegistry.h:60
edm::Factory::makeModule
std::shared_ptr< maker::ModuleHolder > makeModule(const MakeModuleParams &, signalslot::Signal< void(const ModuleDescription &)> &pre, signalslot::Signal< void(const ModuleDescription &)> &post) const
Definition: Factory.cc:55
edm::PreallocationConfiguration
Definition: PreallocationConfiguration.h:27
ModuleRegistry.h
edm::ModuleRegistry::replaceModule
maker::ModuleHolder * replaceModule(std::string const &iModuleLabel, edm::ParameterSet const &iPSet, edm::PreallocationConfiguration const &)
Definition: ModuleRegistry.cc:36
edm::Factory::get
static Factory const * get()
Definition: Factory.cc:23
edm::ModuleRegistry::getModule
std::shared_ptr< maker::ModuleHolder > getModule(MakeModuleParams const &p, std::string const &moduleLabel, signalslot::Signal< void(ModuleDescription const &)> &iPre, signalslot::Signal< void(ModuleDescription const &)> &iPost)
Definition: ModuleRegistry.cc:20
HerwigMaxPtPartonFilter_cfi.moduleLabel
moduleLabel
Definition: HerwigMaxPtPartonFilter_cfi.py:4
Factory.h
edm::signalslot::Signal
Definition: DelayedReader.h:26