24#ifndef MYSQL_SETS_NESTED_SET_SUBTRACTION_ITERATOR_H
25#define MYSQL_SETS_NESTED_SET_SUBTRACTION_ITERATOR_H
45template <Is_nested_set Source1_tp, Is_nested_set Source2_tp>
46 requires Is_compatible_set<Source1_tp, Source2_tp>
49 Nested_set_subtraction_iterator<Source1_tp, Source2_tp>, Source1_tp,
50 Source2_tp, Binary_operation::op_subtraction> {
87 [[nodiscard]]
auto get()
const {
Self_tp Self_t
Definition: iterator_interface.h:372
auto end() const
Return a valid end iterator, even if !has_object().
Definition: view_sources.h:273
bool has_object() const
Return true if this object holds a source.
Definition: view_sources.h:229
auto find(Args_t &&...args) const
If the source is present, invoke find on it.
Definition: optional_view_source_set.h:70
Common base class for the forward iterators over union view, intersection view, and subtraction view ...
Definition: nested_set_binary_operation_iterator_base.h:54
Source2_tp Source2_t
Definition: nested_set_binary_operation_iterator_base.h:57
typename Source2_t::Const_iterator_t Iterator2_t
Definition: nested_set_binary_operation_iterator_base.h:63
std::pair< const Key_t, Mapped_t > Value_t
Definition: nested_set_binary_operation_iterator_base.h:69
Value_t make_value1() const
Return the current value, computed as operation(m_iterator1, nullptr).
Definition: nested_set_binary_operation_iterator_base.h:119
Iterator1_t m_iterator1
Iterator into the first source.
Definition: nested_set_binary_operation_iterator_base.h:137
Source1_tp Source1_t
Definition: nested_set_binary_operation_iterator_base.h:56
Iterator2_t m_iterator2
Iterator into the second source.
Definition: nested_set_binary_operation_iterator_base.h:142
Opt_source1_t m_source1
The first source.
Definition: nested_set_binary_operation_iterator_base.h:129
const auto & iterator2() const
Return const reference to the current iterator into the second set.
Definition: nested_set_binary_operation_iterator_base.h:106
Opt_source2_t m_source2
The second source.
Definition: nested_set_binary_operation_iterator_base.h:132
typename Source1_t::Const_iterator_t Iterator1_t
Definition: nested_set_binary_operation_iterator_base.h:62
Value_t make_value() const
Return the current value, computed as operation(m_iterator1, m_iterator2).
Definition: nested_set_binary_operation_iterator_base.h:113
const auto & iterator1() const
Return const reference to the current iterator into the first set.
Definition: nested_set_binary_operation_iterator_base.h:100
Iterator over the difference of two sets.
Definition: nested_set_subtraction_iterator.h:50
Source2_tp Source2_t
Definition: nested_set_binary_operation_iterator_base.h:57
void clean() const
Perform the second phase of advancing the position, unless it has already been done.
Definition: nested_set_subtraction_iterator.h:114
void next()
Move to the next iterator position.
Definition: nested_set_subtraction_iterator.h:94
Nested_set_subtraction_iterator()=default
auto get() const
Definition: nested_set_subtraction_iterator.h:87
typename Source2_t::Const_iterator_t Iterator2_t
Definition: nested_set_binary_operation_iterator_base.h:63
Nested_set_subtraction_iterator< Source1_tp, Source2_tp > Self_t
Definition: nested_set_subtraction_iterator.h:51
bool m_is_dirty
True when the first phase of advancing the position but not the second one has completed.
Definition: nested_set_subtraction_iterator.h:110
Source1_tp Source1_t
Definition: nested_set_binary_operation_iterator_base.h:56
Nested_set_subtraction_iterator(const Source1_t *source1, const Source2_t *source2, const Iterator1_t &iterator1, const Iterator2_t &iterator2)
Definition: nested_set_subtraction_iterator.h:80
void set_iterator2_and_advance_if_needed() const
Perform the second phase of advancing the position.
Definition: nested_set_subtraction_iterator.h:135
typename Source1_t::Const_iterator_t Iterator1_t
Definition: nested_set_binary_operation_iterator_base.h:62
bool is_equal(const Nested_set_subtraction_iterator &other) const
Definition: nested_set_subtraction_iterator.h:101
constexpr bool is_subset(const Interval< Set_traits_t > &interval1, const Is_boundary_set_over_traits< Set_traits_t > auto &set2)
Return true if the left Interval is a subset of or equal to the right Boundary_set.
Definition: boundary_set_predicates.h:58