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 {
00020
00021 class KeptProvenance {
00022 public:
00023 KeptProvenance(DropMetaData dropMetaData,
00024 bool dropMetaDataForDroppedData,
00025 std::set<BranchID>& branchesWithStoredHistory);
00026
00027 ProductProvenance const& insert(ProductProvenance const&);
00028 ProductProvenance const& emplace(BranchID, ProductStatus);
00029 void setStatus(ProductProvenance const&, ProductStatus);
00030
00031 auto begin() const { return provenance_.begin(); }
00032 auto end() const { return provenance_.end(); }
00033
00034 void insertAncestors(ProductProvenance const& iGetParents,
00035 Principal const& principal);
00036
00037 private:
00038 bool const keepProvenance_ {true};
00039 DropMetaData const dropMetaData_;
00040 bool const dropMetaDataForDroppedData_;
00041 std::set<BranchID>& branchesWithStoredHistory_;
00042 std::set<ProductProvenance> provenance_ {};
00043 };
00044
00045 }
00046 }
00047
00048 #endif
00049
00050
00051
00052