Go to the documentation of this file. 1 #ifndef DataFormats_Provenance_ProductProvenanceLookup_h
2 #define DataFormats_Provenance_ProductProvenanceLookup_h
25 class ProductRegistry;
46 isParentageSet_{iOther.isParentageSet_.load(std::memory_order_acquire)} {}
48 bool isSet = iOther.isParentageSet_.load(std::memory_order_acquire);
57 isParentageSet_.store(iOther.isParentageSet_.load(std::memory_order_acquire), std::memory_order_release);
94 virtual std::unique_ptr<const std::set<ProductProvenance>>
readProvenance()
const = 0;
ProducedProvenanceInfo(BranchID iBid)
ProducedProvenanceInfo(ProducedProvenanceInfo &&iOther)
virtual std::unique_ptr< const std::set< ProductProvenance > > readProvenance() const =0
BranchID branchID() const noexcept
edm::propagate_const< ProductProvenanceLookup const * > parentProcessRetriever_
std::vector< ProducedProvenanceInfo > entryInfoSet_
void insertIntoSet(ProductProvenance provenanceProduct) const
std::atomic< const std::set< ProductProvenance > * > readEntryInfoSet_
void threadsafe_set(ParentageID id) const
virtual ~ProductProvenanceLookup()
virtual const ProductProvenanceLookup * nextRetriever() const =0
BranchID const & branchID() const
void setupEntryInfoSet(edm::ProductRegistry const &)
ProductProvenance const * branchIDToProvenance(BranchID const &bid) const
std::atomic< bool > isParentageSet_
bool isParentageSet() const noexcept
ProducedProvenanceInfo(ProducedProvenanceInfo const &iOther)
ProductProvenance const * branchIDToProvenanceForProducedOnly(BranchID const &bid) const
ProducedProvenanceInfo & operator=(ProducedProvenanceInfo const &iOther)
ProductProvenanceLookup()
ProductProvenanceLookup & operator=(ProductProvenanceLookup const &)=delete
ProducedProvenanceInfo & operator=(ProducedProvenanceInfo &&iOther)
#define CMS_THREAD_GUARD(_var_)
ProductProvenance provenance_
void update(edm::ProductRegistry const &)
ProductProvenance const * productProvenance() const noexcept