00001 #ifndef art_Framework_IO_Root_detail_KeptProvenance_h
00002 #define art_Framework_IO_Root_detail_KeptProvenance_h
00003
00004
00005
00006
00007
00008
00009 #include "art/Framework/IO/Root/DropMetaData.h"
00010 #include "canvas/Persistency/Provenance/BranchID.h"
00011 #include "canvas/Persistency/Provenance/ProductProvenance.h"
00012
00013 #include <set>
00014
00015 namespace art {
00016
00017 class Principal;
00018
00019 namespace detail {
00023 class KeptProvenance {
00024 public:
00025 KeptProvenance(DropMetaData dropMetaData,
00026 bool dropMetaDataForDroppedData,
00027 std::set<BranchID>& branchesWithStoredHistory);
00028
00029 ProductProvenance const& insert(ProductProvenance const&);
00030 ProductProvenance const& emplace(BranchID, ProductStatus);
00031 void setStatus(ProductProvenance const&, ProductStatus);
00032
00033 auto begin() const { return provenance_.begin(); }
00034 auto end() const { return provenance_.end(); }
00035
00036 void insertAncestors(ProductProvenance const& iGetParents,
00037 Principal const& principal);
00038
00039 private:
00040 bool const keepProvenance_ {true};
00041 DropMetaData const dropMetaData_;
00042 bool const dropMetaDataForDroppedData_;
00043 std::set<BranchID>& branchesWithStoredHistory_;
00044 std::set<ProductProvenance> provenance_ {};
00045 };
00046
00047 }
00048 }
00049
00050 #endif
00051
00052
00053
00054