1 #ifndef FWCore_Framework_Principal_h
2 #define FWCore_Framework_Principal_h
34 #include "boost/iterator/filter_iterator.hpp"
35 #include "boost/shared_ptr.hpp"
45 class HistoryAppender;
46 class ProductHolderIndexHelper;
49 bool operator()(boost::shared_ptr<ProductHolderBase>
const& iObj) {
return bool(iObj);}
55 typedef boost::filter_iterator<FilledProductPtr, ProductHolderCollection::const_iterator>
const_iterator;
64 Principal(boost::shared_ptr<ProductRegistry const> reg,
65 boost::shared_ptr<ProductHolderIndexHelper const>
productLookup,
119 bool skipCurrentProcess,
120 bool& ambiguous)
const;
158 bool fillOnDemand)
const;
175 bool fillOnDemand)
const;
184 void addProduct_(std::auto_ptr<ProductHolderBase> phb);
199 void findProducts(std::vector<ProductHolderBase const*>
const& holders,
229 boost::shared_ptr<ProductRegistry const>
preg_;
252 template <
typename PROD>
254 boost::shared_ptr<Wrapper<PROD>
const>
collection_type::const_iterator const_iterator
void resolveProduct(ProductHolderBase const &phb, bool fillOnDemand) const
ProductRegistry const & productRegistry() const
boost::shared_ptr< Wrapper< PROD > const > getProductByTag(Principal const &ep, InputTag const &tag)
WrapperInterfaceBase const * getInterface() const
void addUnscheduledProduct(boost::shared_ptr< ConstBranchDescription > bd)
static const ProcessHistory emptyProcessHistory_
HistoryAppender * historyAppender_
ConstProductPtr getProductByIndex(ProductHolderIndex const &oid, bool resolveProd, bool fillOnDemand) const
std::vector< boost::shared_ptr< ProductHolderBase > > ProductHolderCollection
void putOrMerge(WrapperOwningHolder const &prod, ProductHolderBase const *productHolder) const
const_iterator end() const
static PFTauRenderPlugin instance
ConstProductPtr getProductHolder(BranchID const &oid, bool resolveProd, bool fillOnDemand) const
ProcessHistoryID processHistoryID_
virtual bool isComplete_() const
void getAllProvenance(std::vector< Provenance const * > &provenances) const
void checkUniquenessAndType(WrapperOwningHolder const &prod, ProductHolderBase const *productHolder) const
void addScheduledProduct(boost::shared_ptr< ConstBranchDescription > bd)
void getManyByType(TypeID const &typeID, BasicHandleVec &results) const
boost::shared_ptr< ProductRegistry const > preg_
std::type_info const & dynamicTypeInfo() const
ProcessHistory const * processHistoryPtr_
Principal(boost::shared_ptr< ProductRegistry const > reg, boost::shared_ptr< ProductHolderIndexHelper const > productLookup, ProcessConfiguration const &pc, BranchType bt, HistoryAppender *historyAppender)
unsigned int ProductHolderIndex
boost::shared_ptr< ProductHolderBase > SharedProductPtr
ProcessHistory const & processHistory() const
void addInputProduct(boost::shared_ptr< ConstBranchDescription > bd)
std::vector< unsigned int > lookupProcessOrder_
void throwConvertTypeError(std::type_info const &expected, std::type_info const &actual)
void findProducts(std::vector< ProductHolderBase const * > const &holders, TypeID const &typeID, BasicHandleVec &results) const
ProcessHistoryID const & processHistoryID() const
BasicHandle getByLabel(KindOfType kindOfType, TypeID const &typeID, InputTag const &inputTag) const
boost::shared_ptr< ProductHolderIndexHelper const > productLookup_
BranchType const & branchType() const
std::vector< unsigned int > const & lookupProcessOrder() const
ProductHolderCollection productHolders_
void addProduct_(std::auto_ptr< ProductHolderBase > phb)
BasicHandle getByToken(KindOfType kindOfType, TypeID const &typeID, ProductHolderIndex index, bool skipCurrentProcess, bool &ambiguous) const
ProcessHistoryID orderProcessHistoryID_
boost::shared_ptr< void const > wrapper_
void addAliasedProduct(boost::shared_ptr< ConstBranchDescription > bd)
OutputHandle getForOutput(BranchID const &bid, bool getProd) const
ProcessConfiguration const & processConfiguration() const
std::set< void const * > productPtrs_
DelayedReader * reader() const
ProductHolderCollection::size_type size_type
ProcessHistory::const_iterator ProcessNameConstIterator
ProductData const * findProductByLabel(KindOfType kindOfType, TypeID const &typeID, InputTag const &inputTag) const
const_iterator begin() const
virtual WrapperHolder getIt(ProductID const &) const
bool operator()(boost::shared_ptr< ProductHolderBase > const &iObj)
virtual void resolveProduct_(ProductHolderBase const &, bool) const
void addProductOrThrow(std::auto_ptr< ProductHolderBase > phb)
boost::filter_iterator< FilledProductPtr, ProductHolderCollection::const_iterator > const_iterator
ProductHolderBase const * ConstProductPtr
virtual bool unscheduledFill(std::string const &moduleLabel) const =0
bool adjustToNewProductRegistry(ProductRegistry const ®)
ProductData const * findProductByTag(TypeID const &typeID, InputTag const &tag) const
void fillPrincipal(ProcessHistoryID const &hist, DelayedReader *reader)
void adjustIndexesAfterProductRegistryAddition()
void addSourceProduct(boost::shared_ptr< ConstBranchDescription > bd)
EDProductGetter const * prodGetter() const
Provenance getProvenance(BranchID const &bid) const
void recombine(Principal &other, std::vector< BranchID > const &bids)
ProcessConfiguration const * processConfiguration_
std::vector< BasicHandle > BasicHandleVec
ProductHolderBase * getExistingProduct(BranchID const &branchID)
ProductHolderIndexHelper const & productLookup() const
void deleteProduct(BranchID const &id)