Go to the documentation of this file. 1 #ifndef DataFormats_Provenance_BranchMapper_h
2 #define DataFormats_Provenance_BranchMapper_h
21 #include <string_view>
28 class ProvenanceReaderBase;
29 class ModuleCallingContext;
30 class ProductRegistry;
49 virtual std::set<ProductProvenance>
readProvenance(
unsigned int transitionIndex)
const = 0;
52 unsigned int transitionIndex,
53 std::atomic<
const std::set<ProductProvenance>*>& writeTo)
const = 0;
89 isParentageSet_{iOther.isParentageSet_.load(std::memory_order_acquire)} {}
91 bool isSet = iOther.isParentageSet_.load(std::memory_order_acquire);
100 isParentageSet_.store(iOther.isParentageSet_.load(std::memory_order_acquire), std::memory_order_release);
ProductProvenance provenance_
void readProvenanceAsync(WaitingTaskHolder task, ModuleCallingContext const *moduleCallingContext) const
bool isParentageSet() const noexcept
ProductProvenanceRetriever & operator=(ProductProvenanceRetriever const &)=delete
ProducedProvenanceInfo & operator=(ProducedProvenanceInfo &&iOther)
ProducedProvenanceInfo & operator=(ProducedProvenanceInfo const &iOther)
virtual void readProvenanceAsync(WaitingTaskHolder task, ModuleCallingContext const *moduleCallingContext, unsigned int transitionIndex, std::atomic< const std::set< ProductProvenance > * > &writeTo) const =0
std::atomic< const std::set< ProductProvenance > * > readEntryInfoSet_
size_t operator()(ProductProvenance const &tid) const
ProducedProvenanceInfo(ProducedProvenanceInfo &&iOther)
void update(edm::ProductRegistry const &)
ProducedProvenanceInfo(BranchID iBid)
void insertIntoSet(ProductProvenance provenanceProduct) const
void mergeParentProcessRetriever(ProductProvenanceRetriever const &provRetriever)
bool operator()(ProductProvenance const &iLHS, ProductProvenance const iRHS) const
BranchID const & branchID() const
std::vector< ProducedProvenanceInfo > entryInfoSet_
~ProductProvenanceRetriever()
void threadsafe_set(ParentageID id) const
ProducedProvenanceInfo(ProducedProvenanceInfo const &iOther)
std::atomic< bool > isParentageSet_
void mergeProvenanceRetrievers(std::shared_ptr< ProductProvenanceRetriever > other)
void readProvenance() const
void setupEntryInfoSet(edm::ProductRegistry const &)
virtual ~ProvenanceReaderBase()
ProductProvenance const * productProvenance() const noexcept
BranchID branchID() const noexcept
virtual std::set< ProductProvenance > readProvenance(unsigned int transitionIndex) const =0
void deepCopy(ProductProvenanceRetriever const &)
edm::propagate_const< std::shared_ptr< ProductProvenanceRetriever > > nextRetriever_
void setTransitionIndex(unsigned int transitionIndex)
ProductProvenance const * branchIDToProvenance(BranchID const &bid) const
unsigned int transitionIndex_
ProductProvenance const * branchIDToProvenanceForProducedOnly(BranchID const &bid) const
ProductProvenanceRetriever(unsigned int iTransitionIndex)
std::shared_ptr< const ProvenanceReaderBase > provenanceReader_
edm::propagate_const< ProductProvenanceRetriever const * > parentProcessRetriever_
#define CMS_THREAD_GUARD(_var_)