Field3D
DenseField< Data_T >::iterator Class Reference

#include <DenseField.h>

Public Types

typedef DenseField< Data_T > class_type
 

Public Member Functions

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

Public Attributes

int x
 Current position. More...
 
int y
 
int z
 

Private Attributes

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

Detailed Description

template<class Data_T>
class DenseField< Data_T >::iterator

Definition at line 352 of file DenseField.h.

Member Typedef Documentation

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

Definition at line 366 of file DenseField.h.

Constructor & Destructor Documentation

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

Definition at line 370 of file DenseField.h.

372  : x(currentPos.x), y(currentPos.y), z(currentPos.z),
373  m_window(window), m_field(field)
374  {
375  if (window.intersects(currentPos))
376  m_p = m_field.ptr(x, y, z);
377  else
378  m_p = 0;
379  }
class_type & m_field
Reference to field being iterated over.
Definition: DenseField.h:438
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
Data_T * m_p
Pointer to current element.
Definition: DenseField.h:434
int x
Current position.
Definition: DenseField.h:427
Box3i m_window
Window to traverse.
Definition: DenseField.h:436

Member Function Documentation

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

Definition at line 383 of file DenseField.h.

384  {
385  if (x == m_window.max.x) {
386  if (y == m_window.max.y) {
387  if (z == m_window.max.z) {
388  m_p = 0;
389  } else {
390  m_p = m_field.ptr(x = m_window.min.x, y = m_window.min.y, ++z);
391  }
392  } else {
393  m_p = m_field.ptr(x = m_window.min.x, ++y, z);
394  }
395  } else {
396  ++x;
397  ++m_p;
398  }
399  return *this;
400  }
class_type & m_field
Reference to field being iterated over.
Definition: DenseField.h:438
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
Data_T * m_p
Pointer to current element.
Definition: DenseField.h:434
int x
Current position.
Definition: DenseField.h:427
Box3i m_window
Window to traverse.
Definition: DenseField.h:436
template<class Data_T>
template<class Iter_T >
bool DenseField< Data_T >::iterator::operator== ( const Iter_T &  rhs) const
inline

Definition at line 403 of file DenseField.h.

404  {
405  return m_p == &(*rhs);
406  }
Data_T * m_p
Pointer to current element.
Definition: DenseField.h:434
template<class Data_T>
template<class Iter_T >
bool DenseField< Data_T >::iterator::operator!= ( const Iter_T &  rhs) const
inline

Definition at line 409 of file DenseField.h.

410  {
411  return m_p != &(*rhs);
412  }
Data_T * m_p
Pointer to current element.
Definition: DenseField.h:434
template<class Data_T>
Data_T& DenseField< Data_T >::iterator::operator* ( ) const
inline

Definition at line 414 of file DenseField.h.

415  {
416  return *m_p;
417  }
Data_T * m_p
Pointer to current element.
Definition: DenseField.h:434
template<class Data_T>
Data_T* DenseField< Data_T >::iterator::operator-> ( ) const
inline

Definition at line 419 of file DenseField.h.

420  {
421  return m_p;
422  }
Data_T * m_p
Pointer to current element.
Definition: DenseField.h:434

Member Data Documentation

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

Current position.

Definition at line 427 of file DenseField.h.

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

Definition at line 427 of file DenseField.h.

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

Definition at line 427 of file DenseField.h.

template<class Data_T>
Data_T* DenseField< Data_T >::iterator::m_p
private

Pointer to current element.

Definition at line 434 of file DenseField.h.

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

Window to traverse.

Definition at line 436 of file DenseField.h.

template<class Data_T>
class_type& DenseField< Data_T >::iterator::m_field
private

Reference to field being iterated over.

Definition at line 438 of file DenseField.h.


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