1 #ifndef OSMIUM_DIFF_ITERATOR_HPP
2 #define OSMIUM_DIFF_ITERATOR_HPP
38 #include <type_traits>
51 template <
typename TBasicIterator>
52 class DiffIterator :
public std::iterator<std::input_iterator_tag, const osmium::DiffObject> {
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)
81 m_next(begin == end ? begin : ++begin),
82 m_end(
std::move(end)),
87 m_prev = std::move(m_curr);
90 if (m_next != m_end) {
104 return m_curr == rhs.m_curr && m_end == rhs.m_end;
108 return !(*
this == rhs);
126 template <
typename TBasicIterator>
128 TBasicIterator
end) {
134 #endif // OSMIUM_DIFF_ITERATOR_HPP
Definition: diff_object.hpp:63
DiffIterator< TBasicIterator > make_diff_iterator(TBasicIterator begin, TBasicIterator end)
Definition: diff_iterator.hpp:127
const TBasicIterator m_end
Definition: diff_iterator.hpp:59
Definition: reader_iterator.hpp:39
Definition: diff_iterator.hpp:52
Namespace for everything in the Osmium library.
Definition: assembler.hpp:59
osmium::DiffObject m_diff
Definition: diff_iterator.hpp:61
osmium::io::InputIterator< osmium::io::Reader > end(osmium::io::Reader &)
Definition: reader_iterator.hpp:45
bool operator==(const DiffIterator &rhs) const noexcept
Definition: diff_iterator.hpp:103
void set_diff() const noexcept
Definition: diff_iterator.hpp:63
DiffIterator & operator++()
Definition: diff_iterator.hpp:86
TBasicIterator m_prev
Definition: diff_iterator.hpp:55
reference operator*() const noexcept
Definition: diff_iterator.hpp:111
DiffIterator operator++(int)
Definition: diff_iterator.hpp:97
TBasicIterator m_curr
Definition: diff_iterator.hpp:56
pointer operator->() const noexcept
Definition: diff_iterator.hpp:116
TBasicIterator m_next
Definition: diff_iterator.hpp:57
osmium::io::InputIterator< osmium::io::Reader > begin(osmium::io::Reader &reader)
Definition: reader_iterator.hpp:41
bool operator!=(const DiffIterator &rhs) const noexcept
Definition: diff_iterator.hpp:107
DiffIterator(TBasicIterator begin, TBasicIterator end)
Definition: diff_iterator.hpp:78