1 #ifndef canvas_Persistency_Provenance_RangeSet_h 2 #define canvas_Persistency_Provenance_RangeSet_h 9 #include "cetlib/container_algorithms.h" 41 std::vector<EventRange>
const&
51 bool is_full_run()
const;
52 bool is_full_subRun()
const;
53 bool is_sorted()
const;
61 std::string to_compact_string()
const;
62 bool has_disjoint_ranges()
const;
72 return ranges_.begin();
80 unsigned checksum()
const;
85 return ranges_.front();
90 return ranges_.back();
97 template <
typename... ARGS>
98 void emplace_range(ARGS&&...);
116 cet::sort_all(ranges_);
125 static constexpr
unsigned 139 "RangeSet::require_not_full_run")
140 <<
"\nA RangeSet created using RangeSet::forRun cannot be " 145 std::vector<EventRange> ranges_{};
148 bool isCollapsed_{
false};
149 mutable unsigned checksum_{invalidChecksum()};
171 template <
typename... ARGS>
175 require_not_full_run();
176 ranges_.emplace_back(std::forward<ARGS>(args)...);
177 isCollapsed_ =
false;
std::ostream & operator<<(std::ostream &os, EDAnalyzer::Table< T > const &t)
constexpr auto const & right(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)
std::vector< EventRange >::const_iterator const_iterator
void set_run(RunNumber_t const r)
EventRange full_run_event_range()
constexpr bool is_valid(IDNumber_t< L > const id)
static constexpr unsigned invalidChecksum()
void throw_if_not_disjoint(RunNumber_t const rn, EventRange const &left, EventRange const &right) noexcept(false)
std::vector< EventRange > const & ranges() const
std::enable_if_t< detail::are_handles< T, U >::value, bool > disjoint_ranges(T const &a, U const &b)
IDNumber_t< Level::SubRun > SubRunNumber_t
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
constexpr auto const & left(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)
void require_not_full_run()
std::enable_if_t< detail::are_handles< T, U >::value, bool > overlapping_ranges(T const &a, U const &b)
std::enable_if_t< detail::are_handles< T, U >::value, bool > same_ranges(T const &a, U const &b)
IDNumber_t< Level::Event > EventNumber_t
bool operator==(Provenance const &a, Provenance const &b)
void emplace_range(ARGS &&...)
bool is_collapsed() const
IDNumber_t< Level::Run > RunNumber_t