Field3D
DenseField< Data_T >::const_iterator Class Reference

#include <DenseField.h>

Public Types

typedef DenseField< Data_T > class_type
 

Public Member Functions

 const_iterator (const class_type &field, const Box3i &window, const V3i &currentPos)
 
template<class Iter_T >
bool operator!= (const Iter_T &rhs) const
 
const Data_T & operator* () const
 
const const_iteratoroperator++ ()
 
const Data_T * operator-> () const
 
template<class Iter_T >
bool operator== (const Iter_T &rhs) const
 

Public Attributes

int x
 Current position.
 
int y
 
int z
 

Private Attributes

const class_typem_field
 Reference to field being iterated over.
 
const Data_T * m_p
 Pointer to current element.
 
Box3i m_window
 Window to traverse.
 

Detailed Description

template<class Data_T>
class DenseField< Data_T >::const_iterator

Definition at line 257 of file DenseField.h.

Member Typedef Documentation

◆ class_type

template<class Data_T >
typedef DenseField<Data_T> DenseField< Data_T >::const_iterator::class_type

Definition at line 271 of file DenseField.h.

Constructor & Destructor Documentation

◆ const_iterator()

template<class Data_T >
DenseField< Data_T >::const_iterator::const_iterator ( const class_type & field,
const Box3i & window,
const V3i & currentPos )
inline

Definition at line 275 of file DenseField.h.

277 : x(currentPos.x), y(currentPos.y), z(currentPos.z),
278 m_window(window), m_field(field)
279 {
280 if (window.intersects(currentPos))
281 m_p = m_field.ptr(x, y, z);
282 else
283 m_p = 0;
284 }
int x
Current position.
Definition DenseField.h:332
const Data_T * m_p
Pointer to current element.
Definition DenseField.h:339
const class_type & m_field
Reference to field being iterated over.
Definition DenseField.h:343
Box3i m_window
Window to traverse.
Definition DenseField.h:341
Data_T * ptr(int i, int j, int k)
Returns a pointer to a given element. Used by the iterators mainly.
Definition DenseField.h:678

Member Function Documentation

◆ operator++()

template<class Data_T >
const const_iterator & DenseField< Data_T >::const_iterator::operator++ ( )
inline

Definition at line 288 of file DenseField.h.

289 {
290 if (x == m_window.max.x) {
291 if (y == m_window.max.y) {
292 if (z == m_window.max.z) {
293 m_p = 0;
294 } else {
295 m_p = m_field.ptr(x = m_window.min.x, y = m_window.min.y, ++z);
296 }
297 } else {
298 m_p = m_field.ptr(x = m_window.min.x, ++y, z);
299 }
300 } else {
301 ++x;
302 ++m_p;
303 }
304 return *this;
305 }

◆ operator==()

template<class Data_T >
template<class Iter_T >
bool DenseField< Data_T >::const_iterator::operator== ( const Iter_T & rhs) const
inline

Definition at line 308 of file DenseField.h.

309 {
310 return m_p == &(*rhs);
311 }

◆ operator!=()

template<class Data_T >
template<class Iter_T >
bool DenseField< Data_T >::const_iterator::operator!= ( const Iter_T & rhs) const
inline

Definition at line 314 of file DenseField.h.

315 {
316 return m_p != &(*rhs);
317 }

◆ operator*()

template<class Data_T >
const Data_T & DenseField< Data_T >::const_iterator::operator* ( ) const
inline

Definition at line 319 of file DenseField.h.

320 {
321 return *m_p;
322 }

◆ operator->()

template<class Data_T >
const Data_T * DenseField< Data_T >::const_iterator::operator-> ( ) const
inline

Definition at line 324 of file DenseField.h.

325 {
326 return m_p;
327 }

Member Data Documentation

◆ x

template<class Data_T >
int DenseField< Data_T >::const_iterator::x

Current position.

Definition at line 332 of file DenseField.h.

◆ y

template<class Data_T >
int DenseField< Data_T >::const_iterator::y

Definition at line 332 of file DenseField.h.

◆ z

template<class Data_T >
int DenseField< Data_T >::const_iterator::z

Definition at line 332 of file DenseField.h.

◆ m_p

template<class Data_T >
const Data_T* DenseField< Data_T >::const_iterator::m_p
private

Pointer to current element.

Definition at line 339 of file DenseField.h.

◆ m_window

template<class Data_T >
Box3i DenseField< Data_T >::const_iterator::m_window
private

Window to traverse.

Definition at line 341 of file DenseField.h.

◆ m_field

template<class Data_T >
const class_type& DenseField< Data_T >::const_iterator::m_field
private

Reference to field being iterated over.

Definition at line 343 of file DenseField.h.


The documentation for this class was generated from the following file: