ADTF  3.18.2
simplepointeriterator.h
Go to the documentation of this file.
1 
7 #ifndef _SIMPLE_POINTER_ITERATOR_CLASS_HEADER_
8 #define _SIMPLE_POINTER_ITERATOR_CLASS_HEADER_
9 
10 #include <iterator>
11 #include <cstddef>
12 
13 namespace A_UTILS_NS
14 {
15 
21 template<typename TypeT>
23 {
24 protected:
26  TypeT* m_pData;
27 public:
29  typedef std::random_access_iterator_tag iterator_category;
31  typedef TypeT value_type;
33  typedef std::ptrdiff_t difference_type;
35  typedef TypeT& reference;
37  typedef TypeT* pointer;
38 
43  {
44  }
45 
51  template<typename T2>
53  {
54  }
55 
62  {
63  }
64 
72  template<typename T2>
74  {
75  m_pData = &(*r); return *this;
76  }
77 
80  {
81  ++m_pData; return *this;
82  }
85  {
86  --m_pData; return *this;
87  }
90  {
92  }
95  {
97  }
100  {
101  return simple_pointer_iterator(m_pData + n);
102  }
105  {
106  m_pData += n;
107  return *this;
108  }
111  {
113  }
116  {
117  m_pData -= n;
118  return *this;
119  }
122  {
123  return *m_pData;
124  }
127  {
128  return *m_pData;
129  }
132  {
133  return m_pData[n];
134  }
135 
137  template<typename T>
138  friend bool operator==(const simple_pointer_iterator<T>& r1, const simple_pointer_iterator<T>& r2);
139 
141  template<typename T>
142  friend bool operator!=(const simple_pointer_iterator<T>& r1, const simple_pointer_iterator<T>& r2);
143 
145  template<typename T>
146  friend bool operator<(const simple_pointer_iterator<T>& r1, const simple_pointer_iterator<T>& r2);
147 
149  template<typename T>
150  friend bool operator>(const simple_pointer_iterator<T>& r1, const simple_pointer_iterator<T>& r2);
151 
153  template<typename T>
154  friend bool operator<=(const simple_pointer_iterator<T>& r1, const simple_pointer_iterator<T>& r2);
155 
157  template<typename T>
158  friend bool operator>=(const simple_pointer_iterator<T>& r1, const simple_pointer_iterator<T>& r2);
159 
161  template<typename T>
164 
166  template<typename T>
169 };
170 
172 template<typename T>
174 {
175  return (r1.m_pData == r2.m_pData);
176 }
177 
179 template<typename T>
181 {
182  return (r1.m_pData != r2.m_pData);
183 }
184 
186 template<typename T>
188 {
189  return (r1.m_pData < r2.m_pData);
190 }
191 
193 template<typename T>
195 {
196  return (r1.m_pData > r2.m_pData);
197 }
198 
200 template<typename T>
202 {
203  return (r1.m_pData <= r2.m_pData);
204 }
205 
207 template<typename T>
209 {
210  return (r1.m_pData >= r2.m_pData);
211 }
212 
214 template<typename T>
216  const simple_pointer_iterator<T>& r2)
217 {
219 }
220 
222 template<typename T>
224  const simple_pointer_iterator<T>& r2)
225 {
226  return r1.m_pData - r2.m_pData;
227 }
228 
229 
230 
231 
232 
233 } // namespace A_UTILS_NS
234 
235 
236 
237 
238 #endif // _SIMPLE_POINTER_ITERATOR_CLASS_HEADER_
int tInt
type definition for signed integer value (platform and compiler dependent type).
friend bool operator!=(const simple_pointer_iterator< T > &r1, const simple_pointer_iterator< T > &r2)
Define unequal operator between iterators.
simple_pointer_iterator & operator=(const simple_pointer_iterator< T2 > &r)
Assignment operator.
friend bool operator>=(const simple_pointer_iterator< T > &r1, const simple_pointer_iterator< T > &r2)
Define greater or equal operator between iterators.
simple_pointer_iterator()
Constructor that initalizes the iterator as nullpointer.
friend bool operator>(const simple_pointer_iterator< T > &r1, const simple_pointer_iterator< T > &r2)
Define greater than operator between iterators.
simple_pointer_iterator & operator+=(const difference_type &n)
Define compound assignment operation +=.
TypeT * pointer
short typedefinition for pointer type. Type to represent a pointer to an element pointed by the itera...
simple_pointer_iterator & operator--()
Define operator prefix decrement.
TypeT value_type
short typedefinition for value type. Type of elements pointed by the iterator.
simple_pointer_iterator(pointer pData)
Constructor that initalizes the iterator with a pointer.
simple_pointer_iterator(const simple_pointer_iterator< T2 > &r)
Constructor that initalizes the iterator pointing to the referenced data.
friend bool operator<(const simple_pointer_iterator< T > &r1, const simple_pointer_iterator< T > &r2)
Define lesser than operator between iterators.
std::random_access_iterator_tag iterator_category
definition of iterator category as random-access iterator
reference operator->() const
Define dereference operator.
simple_pointer_iterator operator-(const difference_type &n) const
Define arithmetic - operation between iterators.
simple_pointer_iterator operator++(tInt)
Define operator postfix increment.
TypeT * m_pData
Internally used pointer iterator.
friend bool operator<=(const simple_pointer_iterator< T > &r1, const simple_pointer_iterator< T > &r2)
Define lesser or equal operator between iterators.
reference operator*() const
Define dereference operator.
friend bool operator==(const simple_pointer_iterator< T > &r1, const simple_pointer_iterator< T > &r2)
Define equal operator between iterators.
simple_pointer_iterator operator--(tInt)
Define operator postfix decrement.
std::ptrdiff_t difference_type
short typedefinition for difference type. Type to represent the difference between two iterators.
simple_pointer_iterator & operator-=(const difference_type &n)
Define compound assignment operation -=.
TypeT & reference
short typedefinition for reference type. Type to represent a reference to an element pointed by the i...
simple_pointer_iterator operator+(const difference_type &n) const
Define arithmetic + operation between iterators.
reference operator[](const difference_type &n) const
Define offset dereference operator.
simple_pointer_iterator & operator++()
Define operator prefix increment.
ADTF A_UTIL Namespace - Within adtf this is used as adtf::util or adtf_util.
Definition: d_ptr.h:11
simple_pointer_iterator< T >::difference_type operator-(const simple_pointer_iterator< T > &r1, const simple_pointer_iterator< T > &r2)
Define arithmetic - operation between iterators.
simple_pointer_iterator< T >::difference_type operator+(const simple_pointer_iterator< T > &r1, const simple_pointer_iterator< T > &r2)
Define arithmetic + operation between iterators.
bool operator>=(const simple_pointer_iterator< T > &r1, const simple_pointer_iterator< T > &r2)
Define greater or equal to operator between iterators.
tBool operator==(const cMultiArrayIndex &o_A, const cMultiArrayIndex &o_B)
Comparison operator.
bool operator<(const simple_pointer_iterator< T > &r1, const simple_pointer_iterator< T > &r2)
Define lesser than operator between iterators.
tBool operator!=(const cMultiArrayIndex &o_A, const cMultiArrayIndex &o_B)
Comparison operator.
bool operator>(const simple_pointer_iterator< T > &r1, const simple_pointer_iterator< T > &r2)
Define greater than operator between iterators.
bool operator<=(const simple_pointer_iterator< T > &r1, const simple_pointer_iterator< T > &r2)
Define lesser or equal to operator between iterators.