24#ifndef MYSQL_SETS_INTERVAL_SET_INTERFACE_H
25#define MYSQL_SETS_INTERVAL_SET_INTERFACE_H
44template <Is_bounded_set_traits Set_traits_tp>
47 const typename Set_traits_tp::Element_t &
start,
48 const typename Set_traits_tp::Element_t &exclusive_end) {
50 [[maybe_unused]]
auto ret =
interval.assign(
start, exclusive_end);
83template <
class Self_tp,
class Boundary_set_tp>
87 detail::Make_interval<typename Boundary_set_tp::Set_traits_t>> {
111 return self().boundaries();
116 [[nodiscard]]
const auto &
self()
const {
117 return static_cast<const Self_t &
>(*this);
119 [[nodiscard]]
auto &
self() {
return static_cast<Self_t &
>(*this); }
128template <Is_boundary_set Boundary_set_tp>
132 public std::ranges::view_base {
149template <Is_boundary_set Boundary_set_t>
Self_tp Self_t
Definition: collection_interface.h:91
CRTP base used to define classes that yield disjoint, adjacent pairs of elements from an even-length ...
Definition: disjoint_pairs.h:207
Iterator used by Disjoint_pairs_interface and Disjoint_pairs_view: this yields the disjoint,...
Definition: disjoint_pairs.h:78
Wrapper around an object that is the source for a view: the wrapped object is owned by this object if...
Definition: view_sources.h:101
const Source_t & reference() const
Return a reference to the stored object.
Definition: view_sources.h:130
CRTP base class used to define an Interval set based on an implementation having the member function ...
Definition: interval_set_interface.h:87
Boundary_set_tp Boundary_set_t
Definition: interval_set_interface.h:91
mysql::ranges::Range_const_iterator_type< Boundary_set_tp > Boundary_const_iterator_t
Definition: interval_set_interface.h:102
Boundary_set_t::Set_traits_t Set_traits_t
Definition: interval_set_interface.h:95
const auto & disjoint_pairs_source() const
Definition: interval_set_interface.h:110
auto & disjoint_pairs_source()
Definition: interval_set_interface.h:113
mysql::ranges::Range_iterator_type< Boundary_set_tp > Boundary_iterator_t
Definition: interval_set_interface.h:100
typename Set_traits_t::Element_t Element_t
Definition: interval_set_interface.h:96
View that provides and Interval set from an underlying Boundary set.
Definition: interval_set_interface.h:132
Interval_set_view(const Boundary_set_t &boundaries)
Definition: interval_set_interface.h:138
Boundary_set_tp Boundary_set_t
Definition: interval_set_interface.h:136
const Boundary_set_ref_t m_boundaries
Definition: interval_set_interface.h:146
const auto & boundaries() const
Definition: interval_set_interface.h:141
Holds the start boundary and endpoint boundary of an interval.
Definition: interval.h:178
True if Test is a reference to a boundary set.
Definition: boundary_set_meta.h:225
Helper concept to identify if a class can be the implementation for Interval_set_interface.
Definition: interval_set_interface.h:63
static void start(mysql_harness::PluginFuncEnv *env)
Definition: http_auth_backend_plugin.cc:180
static int interval
Definition: mysqladmin.cc:72
std::remove_cvref_t< decltype(std::declval< const Range_t >().begin())> Range_const_iterator_type
Gives the const_iterator type, deduced from the begin() const member.
Definition: meta.h:47
std::remove_cvref_t< decltype(std::declval< Range_t >().begin())> Range_iterator_type
Gives the iterator type, deduced from the begin() member.
Definition: meta.h:42
Definition: gtid_set.h:183
auto make_interval_set_view(const Boundary_set_t &boundary_set)
Definition: interval_set_interface.h:150
Tag to identify a class as an Interval set.
Definition: interval_set_category.h:41
Helper function object to construct intervals.
Definition: interval_set_interface.h:45
static constexpr auto make_pair(const typename Set_traits_tp::Element_t &start, const typename Set_traits_tp::Element_t &exclusive_end)
Definition: interval_set_interface.h:46