IndexIterator.h
Go to the documentation of this file.
1#ifndef INDEXITERATOR_HEADER
2#define INDEXITERATOR_HEADER
3#include <iterator>
4
5#ifndef DLL_LINKAGE
6#define DLL_LINKAGE
7#endif
8
10{
11public:
12 typedef const size_t value_type;
15 typedef std::forward_iterator_tag iterator_category;
16 typedef size_t size_type;
17 typedef size_t difference_type;
18
20 {
21 }
22
23 IndexIterator(size_t index) : m_index(index)
24 {
25 }
26
27 const size_t
28 operator*() const
29 {
30 return m_index;
31 }
32
33 const size_t*
34 operator->() const
35 {
36 return &m_index;
37 }
38
41 {
42 ++m_index;
43 return *this;
44 }
45
48 {
49 size_t save = m_index;
50 ++m_index;
51 return IndexIterator(save);
52 }
53
54 bool
56 {
57 return m_index == a.m_index;
58 }
59
60 bool
62 {
63 return m_index != a.m_index;
64 }
65
67 operator+=(size_t offset)
68 {
69 m_index += offset;
70 return *this;
71 }
72
74 operator-=(size_t offset)
75 {
76 m_index -= offset;
77 return *this;
78 }
79
81 operator+(size_t offset) const
82 {
83 return IndexIterator(m_index + offset);
84 }
85
87 operator-(size_t offset) const
88 {
89 return IndexIterator(m_index - offset);
90 }
91
92 size_t
94 {
95 return m_index - i.m_index;
96 }
97
98 size_t
99 operator[](size_t i) const
100 {
101 return m_index + i;
102 }
103
104private:
105 size_t m_index;
106};
107
108#endif
uint8_t index
#define DLL_LINKAGE
const size_t value_type
IndexIterator(size_t index)
size_t difference_type
std::forward_iterator_tag iterator_category
IndexIterator operator+(size_t offset) const
size_t operator[](size_t i) const
const size_t * operator->() const
IndexIterator & operator++()
IndexIterator & operator-=(size_t offset)
size_t operator-(IndexIterator i) const
IndexIterator operator-(size_t offset) const
value_type & reference
bool operator!=(IndexIterator a) const
value_type * pointer
const size_t operator*() const
bool operator==(IndexIterator a) const
IndexIterator & operator+=(size_t offset)
IndexIterator operator++(int)