VTK
vtkTypedDataArrayIterator.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkTypedDataArrayIterator.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 
32 #ifndef vtkTypedDataArrayIterator_h
33 #define vtkTypedDataArrayIterator_h
34 
35 #include <iterator> // For iterator traits
36 
37 #include "vtkTypedDataArray.h" // For vtkTypedDataArray
38 
39 template<class Scalar>
41 {
42 public:
43  typedef std::random_access_iterator_tag iterator_category;
44  typedef Scalar value_type;
45  typedef std::ptrdiff_t difference_type;
46  typedef Scalar& reference;
47  typedef Scalar* pointer;
48 
50  : Data(NULL), Index(0) {}
51 
53  const vtkIdType index = 0)
54  : Data(arr),
55  Index(index)
56  {
57  }
58 
60  : Data(o.Data),
61  Index(o.Index)
62  {
63  }
64 
67  {
68  std::swap(this->Data, o.Data);
69  std::swap(this->Index, o.Index);
70  return *this;
71  }
72 
74  {
75  return this->Data == o.Data && this->Index == o.Index;
76  }
77 
79  {
80  return this->Data == o.Data && this->Index != o.Index;
81  }
82 
84  {
85  return this->Data == o.Data && this->Index > o.Index;
86  }
87 
89  {
90  return this->Data == o.Data && this->Index >= o.Index;
91  }
92 
94  {
95  return this->Data == o.Data && this->Index < o.Index;
96  }
97 
99  {
100  return this->Data == o.Data && this->Index <= o.Index;
101  }
102 
103  Scalar& operator*()
104  {
105  return this->Data->GetValueReference(this->Index);
106  }
107 
108  Scalar* operator->() const
109  {
110  return &this->Data->GetValueReference(this->Index);
111  }
112 
113  Scalar& operator[](const difference_type &n)
114  {
115  return this->Data->GetValueReference(this->Index + n);
116  }
117 
119  {
120  ++this->Index;
121  return *this;
122  }
123 
125  {
126  --this->Index;
127  return *this;
128  }
129 
131  {
132  return vtkTypedDataArrayIterator(this->Data, this->Index++);
133  }
134 
136  {
137  return vtkTypedDataArrayIterator(this->Data, this->Index--);
138  }
139 
141  {
142  return vtkTypedDataArrayIterator(this->Data, this->Index + n);
143  }
144 
146  {
147  return vtkTypedDataArrayIterator(this->Data, this->Index - n);
148  }
149 
151  {
152  return this->Index - other.Index;
153  }
154 
156  {
157  this->Index += n;
158  return *this;
159  }
160 
162  {
163  this->Index -= n;
164  return *this;
165  }
166 
167 private:
169  vtkIdType Index;
170 };
171 
172 #endif // vtkTypedDataArrayIterator_h
173 
174 // VTK-HeaderTest-Exclude: vtkTypedDataArrayIterator.h
vtkTypedDataArrayIterator::operator++
vtkTypedDataArrayIterator & operator++()
Definition: vtkTypedDataArrayIterator.h:118
vtkTypedDataArrayIterator::vtkTypedDataArrayIterator
vtkTypedDataArrayIterator()
Definition: vtkTypedDataArrayIterator.h:49
vtkTypedDataArrayIterator::operator-=
vtkTypedDataArrayIterator & operator-=(const difference_type &n)
Definition: vtkTypedDataArrayIterator.h:161
vtkTypedDataArrayIterator::operator[]
Scalar & operator[](const difference_type &n)
Definition: vtkTypedDataArrayIterator.h:113
vtkIdType
int vtkIdType
Definition: vtkType.h:275
vtkTypedDataArrayIterator::operator+=
vtkTypedDataArrayIterator & operator+=(const difference_type &n)
Definition: vtkTypedDataArrayIterator.h:155
vtkTypedDataArray
Extend vtkDataArray with abstract type-specific API.
Definition: vtkTypedDataArray.h:47
vtkgl::n
GLclampd n
Definition: vtkgl.h:14370
vtkTypedDataArrayIterator::operator->
Scalar * operator->() const
Definition: vtkTypedDataArrayIterator.h:108
vtkTypedDataArrayIterator::operator!=
bool operator!=(const vtkTypedDataArrayIterator< Scalar > &o) const
Definition: vtkTypedDataArrayIterator.h:78
vtkTypedDataArrayIterator::value_type
Scalar value_type
Definition: vtkTypedDataArrayIterator.h:44
vtkTypedDataArrayIterator::vtkTypedDataArrayIterator
vtkTypedDataArrayIterator(vtkTypedDataArray< Scalar > *arr, const vtkIdType index=0)
Definition: vtkTypedDataArrayIterator.h:52
vtkTypedDataArrayIterator::operator++
vtkTypedDataArrayIterator operator++(int)
Definition: vtkTypedDataArrayIterator.h:130
vtkTypedDataArrayIterator::iterator_category
std::random_access_iterator_tag iterator_category
Definition: vtkTypedDataArrayIterator.h:43
vtkTypedDataArrayIterator::operator>
bool operator>(const vtkTypedDataArrayIterator< Scalar > &o) const
Definition: vtkTypedDataArrayIterator.h:83
vtkTypedDataArrayIterator::pointer
Scalar * pointer
Definition: vtkTypedDataArrayIterator.h:47
vtkTypedDataArrayIterator::operator>=
bool operator>=(const vtkTypedDataArrayIterator< Scalar > &o) const
Definition: vtkTypedDataArrayIterator.h:88
vtkTypedDataArrayIterator::operator<
bool operator<(const vtkTypedDataArrayIterator< Scalar > &o) const
Definition: vtkTypedDataArrayIterator.h:93
vtkTypedDataArrayIterator::difference_type
std::ptrdiff_t difference_type
Definition: vtkTypedDataArrayIterator.h:45
vtkTypedDataArrayIterator::operator-
vtkTypedDataArrayIterator operator-(const difference_type &n) const
Definition: vtkTypedDataArrayIterator.h:145
vtkTypedDataArray.h
vtkTypedDataArrayIterator::operator--
vtkTypedDataArrayIterator operator--(int)
Definition: vtkTypedDataArrayIterator.h:135
vtkTypedDataArrayIterator::operator*
Scalar & operator*()
Definition: vtkTypedDataArrayIterator.h:103
vtkTypedDataArrayIterator::operator--
vtkTypedDataArrayIterator & operator--()
Definition: vtkTypedDataArrayIterator.h:124
vtkgl::index
GLuint index
Definition: vtkgl.h:11983
vtkTypedDataArrayIterator::operator+
vtkTypedDataArrayIterator operator+(const difference_type &n) const
Definition: vtkTypedDataArrayIterator.h:140
vtkTypedDataArrayIterator::operator=
vtkTypedDataArrayIterator & operator=(vtkTypedDataArrayIterator< Scalar > o)
Definition: vtkTypedDataArrayIterator.h:66
vtkTypedDataArrayIterator
STL-style random access iterator for vtkTypedDataArrays.
Definition: vtkTypedDataArrayIterator.h:41
vtkTypedDataArrayIterator::reference
Scalar & reference
Definition: vtkTypedDataArrayIterator.h:46
vtkTypedDataArrayIterator::operator<=
bool operator<=(const vtkTypedDataArrayIterator< Scalar > &o) const
Definition: vtkTypedDataArrayIterator.h:98
vtkTypedDataArrayIterator::vtkTypedDataArrayIterator
vtkTypedDataArrayIterator(const vtkTypedDataArrayIterator &o)
Definition: vtkTypedDataArrayIterator.h:59
vtkTypedDataArrayIterator::operator==
bool operator==(const vtkTypedDataArrayIterator< Scalar > &o) const
Definition: vtkTypedDataArrayIterator.h:73
vtkTypedDataArrayIterator::operator-
difference_type operator-(const vtkTypedDataArrayIterator &other) const
Definition: vtkTypedDataArrayIterator.h:150