CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends
edm::ProcessBlock Class Reference

#include <ProcessBlock.h>

Public Types

using CacheIdentifier_t = unsigned long
 

Public Member Functions

CacheIdentifier_t cacheIdentifier () const
 
template<typename PROD , typename... Args>
void emplace (EDPutTokenT< PROD > token, Args &&...args)
 
template<typename PROD , typename... Args>
void emplace (EDPutToken token, Args &&...args)
 
template<typename PROD >
PROD const & get (EDGetTokenT< PROD > token) const noexcept(false)
 
template<typename PROD >
bool getByToken (EDGetToken token, Handle< PROD > &result) const
 
template<typename PROD >
bool getByToken (EDGetTokenT< PROD > token, Handle< PROD > &result) const
 
template<typename PROD >
Handle< PRODgetHandle (EDGetTokenT< PROD > token) const
 
ModuleCallingContext const * moduleCallingContext () const
 
 ProcessBlock (ProcessBlockPrincipal const &, ModuleDescription const &, ModuleCallingContext const *, bool isAtEnd)
 
std::string const & processName () const
 
template<typename PROD >
void put (EDPutTokenT< PROD > token, std::unique_ptr< PROD > product)
 
template<typename PROD >
void put (EDPutToken token, std::unique_ptr< PROD > product)
 
void setConsumer (EDConsumerBase const *iConsumer)
 
void setProducer (ProducerBase const *iProducer)
 

Private Types

using ProductPtrVec = std::vector< edm::propagate_const< std::unique_ptr< WrapperBase >>>
 

Private Member Functions

void commit_ (std::vector< edm::ProductResolverIndex > const &iShouldPut)
 
template<typename PROD , typename... Args>
void emplaceImpl (EDPutToken::value_type token, Args &&...args)
 
ProcessBlockPrincipal const & processBlockPrincipal () const
 
template<typename PROD >
void putImpl (EDPutToken::value_type token, std::unique_ptr< PROD > product)
 
ProductPtrVecputProducts ()
 
ProductPtrVec const & putProducts () const
 

Private Attributes

ModuleCallingContext const * moduleCallingContext_
 
PrincipalGetAdapter provRecorder_
 
ProductPtrVec putProducts_
 

Friends

class ProducerBase
 
template<typename T >
class stream::ProducingModuleAdaptorBase
 

Detailed Description

Author
W. David Dagenhart, created 19 March, 2020

Definition at line 36 of file ProcessBlock.h.

Member Typedef Documentation

using edm::ProcessBlock::CacheIdentifier_t = unsigned long

If you are caching data from the ProcessBlock, you should also keep this number. If this number changes then you know that the data you have cached is invalid. The value of '0' will never be returned so you can use that to denote that you have not yet checked the value.

Definition at line 63 of file ProcessBlock.h.

using edm::ProcessBlock::ProductPtrVec = std::vector<edm::propagate_const<std::unique_ptr<WrapperBase>>>
private

Definition at line 97 of file ProcessBlock.h.

Constructor & Destructor Documentation

edm::ProcessBlock::ProcessBlock ( ProcessBlockPrincipal const &  pbp,
ModuleDescription const &  md,
ModuleCallingContext const *  moduleCallingContext,
bool  isAtEnd 
)

Definition at line 7 of file ProcessBlock.cc.

ModuleCallingContext const * moduleCallingContext_
Definition: ProcessBlock.h:103
PrincipalGetAdapter provRecorder_
Definition: ProcessBlock.h:101
ModuleCallingContext const * moduleCallingContext() const
Definition: ProcessBlock.h:78

Member Function Documentation

ProcessBlock::CacheIdentifier_t edm::ProcessBlock::cacheIdentifier ( ) const

Definition at line 19 of file ProcessBlock.cc.

References edm::Principal::cacheIdentifier(), and processBlockPrincipal().

19  {
21  }
CacheIdentifier_t cacheIdentifier() const
Definition: Principal.h:185
ProcessBlockPrincipal const & processBlockPrincipal() const
Definition: ProcessBlock.cc:25
void edm::ProcessBlock::commit_ ( std::vector< edm::ProductResolverIndex > const &  iShouldPut)
private

Definition at line 29 of file ProcessBlock.cc.

References runTheMatrix::const, edm::get_underlying_safe(), edm::Principal::getProductResolverByIndex(), mps_fire::i, edm::isEndTransition(), eostools::move(), edm::PrincipalGetAdapter::principal(), processBlockPrincipal(), provRecorder_, edm::ProcessBlockPrincipal::put(), putProducts(), edm::PrincipalGetAdapter::putTokenIndexToProductResolverIndex(), and edm::PrincipalGetAdapter::transition().

Referenced by edm::stream::ProducingModuleAdaptorBase< EDProducerBase >::commit().

29  {
30  ProcessBlockPrincipal const& pbp = processBlockPrincipal();
31  size_t nPut = 0;
32  for (size_t i = 0; i < putProducts().size(); ++i) {
33  auto& product = get_underlying_safe(putProducts()[i]);
34  if (product) {
36  ++nPut;
37  }
38  }
39 
40  auto sz = iShouldPut.size();
41  if (sz != 0 and sz != nPut) {
42  //some were missed
43  auto& principal = provRecorder_.principal();
44  for (auto index : iShouldPut) {
45  auto resolver = principal.getProductResolverByIndex(index);
46  if (not resolver->productResolved() and isEndTransition(provRecorder_.transition()) ==
47  resolver->branchDescription().availableOnlyAtEndTransition()) {
48  dynamic_cast<ProductPutterBase const*>(resolver)->putProduct(std::unique_ptr<WrapperBase>());
49  }
50  }
51  }
52 
53  // the cleanup is all or none
54  putProducts().clear();
55  }
Transition transition() const
Principal const & principal() const
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex() const
constexpr std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
ProductPtrVec & putProducts()
Definition: ProcessBlock.h:98
constexpr bool isEndTransition(Transition iValue)
Definition: Transition.h:37
PrincipalGetAdapter provRecorder_
Definition: ProcessBlock.h:101
def move
Definition: eostools.py:511
ProcessBlockPrincipal const & processBlockPrincipal() const
Definition: ProcessBlock.cc:25
ConstProductResolverPtr getProductResolverByIndex(ProductResolverIndex const &oid) const
Definition: Principal.cc:562
template<typename PROD , typename... Args>
void edm::ProcessBlock::emplace ( EDPutTokenT< PROD token,
Args &&...  args 
)

Definition at line 171 of file ProcessBlock.h.

References writedatasetfile::args, edm::EDPutTokenT< T >::index(), edm::EDPutTokenT< T >::isUninitialized(), PROD, edm::principal_get_adapter_detail::throwOnPutOfUninitializedToken(), and UNLIKELY.

Referenced by AlignmentProducerAsAnalyzer::endProcessBlockProduce().

171  {
172  if (UNLIKELY(token.isUninitialized())) {
174  }
175  emplaceImpl<PROD>(token.index(), std::forward<Args>(args)...);
176  }
void throwOnPutOfUninitializedToken(char const *principalType, std::type_info const &productType)
#define PROD(A, B)
#define UNLIKELY(x)
Definition: Likely.h:21
template<typename PROD , typename... Args>
void edm::ProcessBlock::emplace ( EDPutToken  token,
Args &&...  args 
)

Definition at line 179 of file ProcessBlock.h.

References writedatasetfile::args, edm::PrincipalGetAdapter::getTypeIDForPutTokenIndex(), edm::EDPutToken::index(), edm::EDPutToken::isUninitialized(), PROD, provRecorder_, edm::principal_get_adapter_detail::throwOnPutOfUninitializedToken(), edm::principal_get_adapter_detail::throwOnPutOfWrongType(), and UNLIKELY.

179  {
180  if (UNLIKELY(token.isUninitialized())) {
182  }
183  if (UNLIKELY(provRecorder_.getTypeIDForPutTokenIndex(token.index()) != TypeID{typeid(PROD)})) {
186  }
187  emplaceImpl<PROD>(token.index(), std::forward<Args>(args)...);
188  }
void throwOnPutOfUninitializedToken(char const *principalType, std::type_info const &productType)
TypeID const & getTypeIDForPutTokenIndex(EDPutToken::value_type index) const
PrincipalGetAdapter provRecorder_
Definition: ProcessBlock.h:101
void throwOnPutOfWrongType(std::type_info const &wrongType, TypeID const &rightType)
#define PROD(A, B)
#define UNLIKELY(x)
Definition: Likely.h:21
template<typename PROD , typename... Args>
void edm::ProcessBlock::emplaceImpl ( EDPutToken::value_type  token,
Args &&...  args 
)
private

Definition at line 204 of file ProcessBlock.h.

References writedatasetfile::args, cms::cuda::assert(), eostools::move(), putProducts(), findQualityFiles::size, and relativeConstraints::value.

204  {
205  assert(index < putProducts().size());
206 
207  std::unique_ptr<Wrapper<PROD>> wp(new Wrapper<PROD>(WrapperBase::Emplace{}, std::forward<Args>(args)...));
208 
209  // The following will call post_insert if T has such a function,
210  // and do nothing if T has no such function.
211  std::conditional_t<detail::has_postinsert<PROD>::value, DoPostInsert<PROD>, DoNotPostInsert<PROD>> maybe_inserter;
212  maybe_inserter(&(wp->bareProduct()));
213 
214  putProducts()[index] = std::move(wp);
215  }
ProductPtrVec & putProducts()
Definition: ProcessBlock.h:98
assert(be >=bs)
def move
Definition: eostools.py:511
tuple size
Write out results.
template<typename PROD >
PROD const & edm::ProcessBlock::get ( EDGetTokenT< PROD token) const
noexcept

Definition at line 135 of file ProcessBlock.h.

References eostools::move(), PROD, edm::PRODUCT_TYPE, and unpackBuffers-CaloStage2::token.

Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), submitPVValidationJobs.BetterConfigParser::__updateDict(), rrapi.RRApi::columns(), rrapi.RRApi::count(), rrapi.RRApi::data(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), betterConfigParser.BetterConfigParser::getResultingSection(), submitPVValidationJobs.BetterConfigParser::getResultingSection(), rrapi.RRApi::report(), rrapi.RRApi::reports(), rrapi.RRApi::tables(), rrapi.RRApi::tags(), rrapi.RRApi::templates(), and rrapi.RRApi::workspaces().

135  {
136  BasicHandle bh = provRecorder_.getByToken_(TypeID(typeid(PROD)), PRODUCT_TYPE, token, moduleCallingContext_);
137  return *convert_handle<PROD>(std::move(bh));
138  }
BasicHandle getByToken_(TypeID const &id, KindOfType kindOfType, EDGetToken token, ModuleCallingContext const *mcc) const
ModuleCallingContext const * moduleCallingContext_
Definition: ProcessBlock.h:103
PrincipalGetAdapter provRecorder_
Definition: ProcessBlock.h:101
def move
Definition: eostools.py:511
#define PROD(A, B)
template<typename PROD >
bool edm::ProcessBlock::getByToken ( EDGetToken  token,
Handle< PROD > &  result 
) const

Definition at line 107 of file ProcessBlock.h.

References edm::HandleBase::clear(), edm::HandleBase::failedToGet(), edm::PrincipalGetAdapter::getByToken_(), moduleCallingContext_, eostools::move(), PROD, edm::PRODUCT_TYPE, and provRecorder_.

107  {
108  result.clear();
109  BasicHandle bh = provRecorder_.getByToken_(TypeID(typeid(PROD)), PRODUCT_TYPE, token, moduleCallingContext_);
110  result = convert_handle<PROD>(std::move(bh)); // throws on conversion error
111  if (result.failedToGet()) {
112  return false;
113  }
114  return true;
115  }
BasicHandle getByToken_(TypeID const &id, KindOfType kindOfType, EDGetToken token, ModuleCallingContext const *mcc) const
ModuleCallingContext const * moduleCallingContext_
Definition: ProcessBlock.h:103
PrincipalGetAdapter provRecorder_
Definition: ProcessBlock.h:101
def move
Definition: eostools.py:511
#define PROD(A, B)
template<typename PROD >
bool edm::ProcessBlock::getByToken ( EDGetTokenT< PROD token,
Handle< PROD > &  result 
) const

Definition at line 118 of file ProcessBlock.h.

References edm::HandleBase::clear(), edm::HandleBase::failedToGet(), edm::PrincipalGetAdapter::getByToken_(), moduleCallingContext_, eostools::move(), PROD, edm::PRODUCT_TYPE, and provRecorder_.

118  {
119  result.clear();
120  BasicHandle bh = provRecorder_.getByToken_(TypeID(typeid(PROD)), PRODUCT_TYPE, token, moduleCallingContext_);
121  result = convert_handle<PROD>(std::move(bh)); // throws on conversion error
122  if (result.failedToGet()) {
123  return false;
124  }
125  return true;
126  }
BasicHandle getByToken_(TypeID const &id, KindOfType kindOfType, EDGetToken token, ModuleCallingContext const *mcc) const
ModuleCallingContext const * moduleCallingContext_
Definition: ProcessBlock.h:103
PrincipalGetAdapter provRecorder_
Definition: ProcessBlock.h:101
def move
Definition: eostools.py:511
#define PROD(A, B)
template<typename PROD >
Handle< PROD > edm::ProcessBlock::getHandle ( EDGetTokenT< PROD token) const

Definition at line 129 of file ProcessBlock.h.

References edm::PrincipalGetAdapter::getByToken_(), moduleCallingContext_, eostools::move(), PROD, edm::PRODUCT_TYPE, and provRecorder_.

Referenced by edm::GetterOfProducts< trigger::HLTPrescaleTable >::fillHandles().

129  {
130  BasicHandle bh = provRecorder_.getByToken_(TypeID(typeid(PROD)), PRODUCT_TYPE, token, moduleCallingContext_);
131  return convert_handle<PROD>(std::move(bh));
132  }
BasicHandle getByToken_(TypeID const &id, KindOfType kindOfType, EDGetToken token, ModuleCallingContext const *mcc) const
ModuleCallingContext const * moduleCallingContext_
Definition: ProcessBlock.h:103
PrincipalGetAdapter provRecorder_
Definition: ProcessBlock.h:101
def move
Definition: eostools.py:511
#define PROD(A, B)
ModuleCallingContext const* edm::ProcessBlock::moduleCallingContext ( ) const
inline

Definition at line 78 of file ProcessBlock.h.

References moduleCallingContext_.

78 { return moduleCallingContext_; }
ModuleCallingContext const * moduleCallingContext_
Definition: ProcessBlock.h:103
ProcessBlockPrincipal const & edm::ProcessBlock::processBlockPrincipal ( ) const
private

Definition at line 25 of file ProcessBlock.cc.

References runTheMatrix::const, edm::PrincipalGetAdapter::principal(), and provRecorder_.

Referenced by cacheIdentifier(), commit_(), and processName().

25  {
26  return dynamic_cast<ProcessBlockPrincipal const&>(provRecorder_.principal());
27  }
Principal const & principal() const
PrincipalGetAdapter provRecorder_
Definition: ProcessBlock.h:101
std::string const & edm::ProcessBlock::processName ( ) const

Definition at line 23 of file ProcessBlock.cc.

References processBlockPrincipal(), and edm::ProcessBlockPrincipal::processName().

23 { return processBlockPrincipal().processName(); }
ProcessBlockPrincipal const & processBlockPrincipal() const
Definition: ProcessBlock.cc:25
std::string const & processName() const
template<typename PROD >
void edm::ProcessBlock::put ( EDPutTokenT< PROD token,
std::unique_ptr< PROD product 
)

Definition at line 141 of file ProcessBlock.h.

References edm::EDPutTokenT< T >::index(), edm::EDPutTokenT< T >::isUninitialized(), eostools::move(), PROD, edm::PrincipalGetAdapter::productInstanceLabel(), provRecorder_, putImpl(), edm::principal_get_adapter_detail::throwOnPutOfNullProduct(), edm::principal_get_adapter_detail::throwOnPutOfUninitializedToken(), and UNLIKELY.

141  {
142  if (UNLIKELY(product.get() == 0)) { // null pointer is illegal
143  TypeID typeID(typeid(PROD));
145  "ProcessBlock", typeID, provRecorder_.productInstanceLabel(token));
146  }
147  if (UNLIKELY(token.isUninitialized())) {
149  }
150  putImpl(token.index(), std::move(product));
151  }
void throwOnPutOfUninitializedToken(char const *principalType, std::type_info const &productType)
void putImpl(EDPutToken::value_type token, std::unique_ptr< PROD > product)
Definition: ProcessBlock.h:191
PrincipalGetAdapter provRecorder_
Definition: ProcessBlock.h:101
def move
Definition: eostools.py:511
std::string const & productInstanceLabel(EDPutToken) const
#define PROD(A, B)
#define UNLIKELY(x)
Definition: Likely.h:21
void throwOnPutOfNullProduct(char const *principalType, TypeID const &productType, std::string const &productInstanceName)
template<typename PROD >
void edm::ProcessBlock::put ( EDPutToken  token,
std::unique_ptr< PROD product 
)

Definition at line 154 of file ProcessBlock.h.

References edm::PrincipalGetAdapter::getTypeIDForPutTokenIndex(), edm::EDPutToken::index(), edm::EDPutToken::isUninitialized(), eostools::move(), PROD, edm::PrincipalGetAdapter::productInstanceLabel(), provRecorder_, putImpl(), edm::principal_get_adapter_detail::throwOnPutOfNullProduct(), edm::principal_get_adapter_detail::throwOnPutOfUninitializedToken(), edm::principal_get_adapter_detail::throwOnPutOfWrongType(), and UNLIKELY.

154  {
155  if (UNLIKELY(product.get() == 0)) { // null pointer is illegal
156  TypeID typeID(typeid(PROD));
158  "ProcessBlock", typeID, provRecorder_.productInstanceLabel(token));
159  }
160  if (UNLIKELY(token.isUninitialized())) {
162  }
163  if (UNLIKELY(provRecorder_.getTypeIDForPutTokenIndex(token.index()) != TypeID{typeid(PROD)})) {
166  }
167  putImpl(token.index(), std::move(product));
168  }
void throwOnPutOfUninitializedToken(char const *principalType, std::type_info const &productType)
TypeID const & getTypeIDForPutTokenIndex(EDPutToken::value_type index) const
void putImpl(EDPutToken::value_type token, std::unique_ptr< PROD > product)
Definition: ProcessBlock.h:191
PrincipalGetAdapter provRecorder_
Definition: ProcessBlock.h:101
def move
Definition: eostools.py:511
void throwOnPutOfWrongType(std::type_info const &wrongType, TypeID const &rightType)
std::string const & productInstanceLabel(EDPutToken) const
#define PROD(A, B)
#define UNLIKELY(x)
Definition: Likely.h:21
void throwOnPutOfNullProduct(char const *principalType, TypeID const &productType, std::string const &productInstanceName)
template<typename PROD >
void edm::ProcessBlock::putImpl ( EDPutToken::value_type  token,
std::unique_ptr< PROD product 
)
private

Definition at line 191 of file ProcessBlock.h.

References cms::cuda::assert(), eostools::move(), putProducts(), findQualityFiles::size, and relativeConstraints::value.

Referenced by put().

191  {
192  // The following will call post_insert if T has such a function,
193  // and do nothing if T has no such function.
194  std::conditional_t<detail::has_postinsert<PROD>::value, DoPostInsert<PROD>, DoNotPostInsert<PROD>> maybe_inserter;
195  maybe_inserter(product.get());
196 
197  assert(index < putProducts().size());
198 
199  std::unique_ptr<Wrapper<PROD>> wp(new Wrapper<PROD>(std::move(product)));
200  putProducts()[index] = std::move(wp);
201  }
ProductPtrVec & putProducts()
Definition: ProcessBlock.h:98
assert(be >=bs)
def move
Definition: eostools.py:511
tuple size
Write out results.
ProductPtrVec& edm::ProcessBlock::putProducts ( )
inlineprivate

Definition at line 98 of file ProcessBlock.h.

References putProducts_.

Referenced by commit_(), emplaceImpl(), and putImpl().

98 { return putProducts_; }
ProductPtrVec putProducts_
Definition: ProcessBlock.h:102
ProductPtrVec const& edm::ProcessBlock::putProducts ( ) const
inlineprivate

Definition at line 99 of file ProcessBlock.h.

References putProducts_.

99 { return putProducts_; }
ProductPtrVec putProducts_
Definition: ProcessBlock.h:102
void edm::ProcessBlock::setConsumer ( EDConsumerBase const *  iConsumer)
inline

Definition at line 53 of file ProcessBlock.h.

References provRecorder_, and edm::PrincipalGetAdapter::setConsumer().

Referenced by edm::one::EDFilterBase::doAccessInputProcessBlock(), edm::one::EDProducerBase::doAccessInputProcessBlock(), edm::one::EDAnalyzerBase::doAccessInputProcessBlock(), edm::global::EDAnalyzerBase::doAccessInputProcessBlock(), edm::global::EDProducerBase::doAccessInputProcessBlock(), edm::limited::EDProducerBase::doAccessInputProcessBlock(), edm::global::EDFilterBase::doAccessInputProcessBlock(), edm::limited::EDFilterBase::doAccessInputProcessBlock(), edm::limited::EDAnalyzerBase::doAccessInputProcessBlock(), edm::stream::EDAnalyzerAdaptor< T >::doAccessInputProcessBlock(), edm::stream::ProducingModuleAdaptor< T, M, B >::doAccessInputProcessBlock(), edm::one::EDFilterBase::doBeginProcessBlock(), edm::one::EDProducerBase::doBeginProcessBlock(), edm::one::EDAnalyzerBase::doBeginProcessBlock(), edm::global::EDAnalyzerBase::doBeginProcessBlock(), edm::global::EDProducerBase::doBeginProcessBlock(), edm::limited::EDProducerBase::doBeginProcessBlock(), edm::global::EDFilterBase::doBeginProcessBlock(), edm::limited::EDFilterBase::doBeginProcessBlock(), edm::limited::EDAnalyzerBase::doBeginProcessBlock(), edm::stream::EDAnalyzerAdaptor< T >::doBeginProcessBlock(), edm::stream::ProducingModuleAdaptor< T, M, B >::doBeginProcessBlock(), edm::one::EDFilterBase::doEndProcessBlock(), edm::one::EDProducerBase::doEndProcessBlock(), edm::one::EDAnalyzerBase::doEndProcessBlock(), edm::global::EDAnalyzerBase::doEndProcessBlock(), edm::global::EDProducerBase::doEndProcessBlock(), edm::limited::EDProducerBase::doEndProcessBlock(), edm::global::EDFilterBase::doEndProcessBlock(), edm::limited::EDFilterBase::doEndProcessBlock(), edm::limited::EDAnalyzerBase::doEndProcessBlock(), edm::stream::EDAnalyzerAdaptor< T >::doEndProcessBlock(), and edm::stream::ProducingModuleAdaptor< T, M, B >::doEndProcessBlock().

53 { provRecorder_.setConsumer(iConsumer); }
void setConsumer(EDConsumerBase const *iConsumer)
PrincipalGetAdapter provRecorder_
Definition: ProcessBlock.h:101
void edm::ProcessBlock::setProducer ( ProducerBase const *  iProducer)

Definition at line 13 of file ProcessBlock.cc.

References provRecorder_, putProducts_, edm::PrincipalGetAdapter::putTokenIndexToProductResolverIndex(), and edm::PrincipalGetAdapter::setProducer().

Referenced by edm::one::EDFilterBase::doBeginProcessBlock(), edm::one::EDProducerBase::doBeginProcessBlock(), edm::global::EDProducerBase::doBeginProcessBlock(), edm::limited::EDProducerBase::doBeginProcessBlock(), edm::limited::EDFilterBase::doBeginProcessBlock(), edm::global::EDFilterBase::doBeginProcessBlock(), edm::stream::ProducingModuleAdaptor< T, M, B >::doBeginProcessBlock(), edm::one::EDFilterBase::doEndProcessBlock(), edm::one::EDProducerBase::doEndProcessBlock(), edm::global::EDProducerBase::doEndProcessBlock(), edm::limited::EDProducerBase::doEndProcessBlock(), edm::limited::EDFilterBase::doEndProcessBlock(), edm::global::EDFilterBase::doEndProcessBlock(), and edm::stream::ProducingModuleAdaptor< T, M, B >::doEndProcessBlock().

13  {
14  provRecorder_.setProducer(iProducer);
15  //set appropriate size
17  }
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex() const
ProductPtrVec putProducts_
Definition: ProcessBlock.h:102
void setProducer(ProducerBase const *iProd)
PrincipalGetAdapter provRecorder_
Definition: ProcessBlock.h:101

Friends And Related Function Documentation

friend class ProducerBase
friend

Definition at line 91 of file ProcessBlock.h.

template<typename T >
friend class stream::ProducingModuleAdaptorBase
friend

Definition at line 93 of file ProcessBlock.h.

Member Data Documentation

ModuleCallingContext const* edm::ProcessBlock::moduleCallingContext_
private

Definition at line 103 of file ProcessBlock.h.

Referenced by getByToken(), getHandle(), and moduleCallingContext().

PrincipalGetAdapter edm::ProcessBlock::provRecorder_
private
ProductPtrVec edm::ProcessBlock::putProducts_
private

Definition at line 102 of file ProcessBlock.h.

Referenced by putProducts(), and setProducer().