1 #ifndef OSMIUM_DIFF_ITERATOR_HPP
2 #define OSMIUM_DIFF_ITERATOR_HPP
38 #include <type_traits>
46 template <
class TBasicIterator>
47 class DiffIterator :
public std::iterator<std::input_iterator_tag, const osmium::DiffObject> {
59 assert(m_curr != m_end);
61 TBasicIterator prev =
m_prev;
62 if (prev->type() != m_curr->type() || prev->id() != m_curr->id()) {
66 TBasicIterator next =
m_next;
67 if (next == m_end || next->type() != m_curr->type() || next->id() != m_curr->id()) {
79 m_next(begin == end ? begin : ++begin),
90 m_prev = std::move(m_curr);
93 if (m_next != m_end) {
111 return !(*
this == rhs);
128 #endif // OSMIUM_DIFF_ITERATOR_HPP
void set_diff() const
Definition: diff_iterator.hpp:58
Definition: diff_object.hpp:47
const TBasicIterator m_end
Definition: diff_iterator.hpp:54
bool operator==(const DiffIterator &rhs) const
Definition: diff_iterator.hpp:106
Definition: diff_iterator.hpp:47
pointer operator->() const
Definition: diff_iterator.hpp:119
Namespace for everything in the Osmium library.
Definition: assembler.hpp:55
osmium::DiffObject m_diff
Definition: diff_iterator.hpp:56
osmium::io::InputIterator< osmium::io::Reader > end(osmium::io::Reader &)
Definition: reader_iterator.hpp:45
bool operator!=(const DiffIterator &rhs) const
Definition: diff_iterator.hpp:110
DiffIterator & operator++()
Definition: diff_iterator.hpp:89
TBasicIterator m_prev
Definition: diff_iterator.hpp:50
reference operator*() const
Definition: diff_iterator.hpp:114
DiffIterator operator++(int)
Definition: diff_iterator.hpp:100
DiffIterator & operator=(const DiffIterator &)=default
TBasicIterator m_curr
Definition: diff_iterator.hpp:51
TBasicIterator m_next
Definition: diff_iterator.hpp:52
osmium::io::InputIterator< osmium::io::Reader > begin(osmium::io::Reader &reader)
Definition: reader_iterator.hpp:41
DiffIterator(TBasicIterator begin, TBasicIterator end)
Definition: diff_iterator.hpp:76