1 #ifndef OSMIUM_DIFF_ITERATOR_HPP 2 #define OSMIUM_DIFF_ITERATOR_HPP 38 #include <type_traits> 51 template <
typename TBasicIterator>
64 assert(m_curr != m_end);
66 bool use_curr_for_prev = m_prev->type() != m_curr->type() || m_prev->id() != m_curr->id();
67 bool use_curr_for_next = m_next == m_end || m_next->type() != m_curr->type() || m_next->id() != m_curr->id();
70 *(use_curr_for_prev ? m_curr :
m_prev),
72 *(use_curr_for_next ? m_curr : m_next)
87 m_next(begin == end ? begin : ++begin),
88 m_end(
std::move(end)),
93 m_prev = std::move(m_curr);
96 if (m_next != m_end) {
110 return m_curr == rhs.m_curr && m_end == rhs.m_end;
114 return !(*
this == rhs);
132 template <
typename TBasicIterator>
134 TBasicIterator
end) {
140 #endif // OSMIUM_DIFF_ITERATOR_HPP Definition: diff_object.hpp:63
DiffIterator< TBasicIterator > make_diff_iterator(TBasicIterator begin, TBasicIterator end)
Definition: diff_iterator.hpp:133
const TBasicIterator m_end
Definition: diff_iterator.hpp:59
Definition: reader_iterator.hpp:39
bool operator!=(const DiffIterator &rhs) const noexcept
Definition: diff_iterator.hpp:113
Definition: diff_iterator.hpp:52
Namespace for everything in the Osmium library.
Definition: assembler.hpp:66
bool operator==(const DiffIterator &rhs) const noexcept
Definition: diff_iterator.hpp:109
reference operator*() const noexcept
Definition: diff_iterator.hpp:117
osmium::DiffObject m_diff
Definition: diff_iterator.hpp:61
pointer operator->() const noexcept
Definition: diff_iterator.hpp:122
osmium::io::InputIterator< osmium::io::Reader > end(osmium::io::Reader &)
Definition: reader_iterator.hpp:45
DiffIterator & operator++()
Definition: diff_iterator.hpp:92
std::input_iterator_tag iterator_category
Definition: diff_iterator.hpp:78
TBasicIterator m_prev
Definition: diff_iterator.hpp:55
void set_diff() const noexcept
Definition: diff_iterator.hpp:63
DiffIterator operator++(int)
Definition: diff_iterator.hpp:103
TBasicIterator m_curr
Definition: diff_iterator.hpp:56
TBasicIterator m_next
Definition: diff_iterator.hpp:57
osmium::io::InputIterator< osmium::io::Reader > begin(osmium::io::Reader &reader)
Definition: reader_iterator.hpp:41
std::ptrdiff_t difference_type
Definition: diff_iterator.hpp:80
DiffIterator(TBasicIterator begin, TBasicIterator end)
Definition: diff_iterator.hpp:84