1 #ifndef canvas_Persistency_Provenance_RangeSet_h 2 #define canvas_Persistency_Provenance_RangeSet_h 30 static constexpr
unsigned 33 return std::numeric_limits<unsigned>::max();
53 std::vector<EventRange>
const&
ranges()
const;
58 bool is_full_run()
const;
59 bool is_full_subRun()
const;
60 bool is_sorted()
const;
61 bool is_collapsed()
const;
63 std::string to_compact_string()
const;
64 bool has_disjoint_ranges()
const;
72 std::size_t begin_idx()
const;
73 std::size_t end_idx()
const;
75 unsigned checksum()
const;
76 std::size_t next_subrun_or_end(std::size_t
const b)
const;
82 std::vector<EventRange> extract_ranges(std::size_t
const b,
85 void assign_ranges(
RangeSet const& rs,
91 template <
typename... ARGS>
92 void emplace_range(ARGS&&...);
108 void require_not_full_run();
111 std::vector<EventRange> ranges_{};
114 bool isCollapsed_{
false};
115 mutable unsigned checksum_{invalidChecksum()};
118 template <
typename... ARGS>
122 require_not_full_run();
123 ranges_.emplace_back(std::forward<ARGS>(args)...);
124 isCollapsed_ =
false;
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
std::enable_if_t< detail::are_handles_v< T, U >, bool > overlapping_ranges(T const &a, U const &b)
EventRange full_run_event_range()
static constexpr unsigned invalidChecksum()
void throw_if_not_disjoint(RunNumber_t const rn, EventRange const &left, EventRange const &right) noexcept(false)
decltype(auto) constexpr end(T &&obj)
ADL-aware version of std::end.
std::enable_if_t< detail::are_handles_v< T, U >, bool > disjoint_ranges(T const &a, U const &b)
constexpr bool is_valid(IDNumber_t< L > const id) noexcept
IDNumber_t< Level::SubRun > SubRunNumber_t
std::ostream & operator<<(std::ostream &os, Analyzer::Table< T > const &t)
constexpr auto const & left(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)
std::enable_if_t< detail::are_handles_v< T, U >, bool > same_ranges(T const &a, U const &b)
IDNumber_t< Level::Event > EventNumber_t
decltype(auto) constexpr begin(T &&obj)
ADL-aware version of std::begin.
void emplace_range(ARGS &&...)
decltype(auto) constexpr empty(T &&obj)
ADL-aware version of std::empty.
bool operator==(ModuleKeyAndType const &a, ModuleKeyAndType const &b) noexcept
IDNumber_t< Level::Run > RunNumber_t