My Project
range3d_iterator_with_boundary_flag< I > Class Template Reference

a 3D iterator that knows its position in the 3D grid, has a flag indicating whether it is on a boundary, and supports iterating over sub-ranges More...

#include <mia/3d/iterator.hh>

Inherits std::forward_iterator_tag.

Public Types

enum  EBoundary {
  eb_none = 0 , eb_xlow = 1 , eb_xhigh = 2 , eb_x = 3 ,
  eb_ylow = 4 , eb_yhigh = 8 , eb_y = 0xC , eb_zlow = 0x10 ,
  eb_zhigh = 0x20 , eb_z = 0x30
}
typedef I internal_iterator
 data type for the real iterator in the background
typedef I::pointer pointer
 data type pointer
typedef I::reference reference
 data type reference
typedef I::value_type value_type
 data value type

Public Member Functions

int get_boundary_flags () const
internal_iterator get_point ()
reference operator* () const
range3d_iterator_with_boundary_flag< I > & operator++ ()
 prefix increment
range3d_iterator_with_boundary_flag< I > operator++ (int)
 postfix increment
pointer operator-> () const
template<typename AI>
range3d_iterator_with_boundary_flag< I > & operator= (const range3d_iterator_with_boundary_flag< AI > &other)
range3d_iterator_with_boundary_flag< I > & operator= (const range3d_iterator_with_boundary_flag< I > &other)
 assignment operator
const C3DBoundspos () const
 range3d_iterator_with_boundary_flag ()
 range3d_iterator_with_boundary_flag (const C3DBounds &pos)
 range3d_iterator_with_boundary_flag (const C3DBounds &pos, const C3DBounds &size, const C3DBounds &start, const C3DBounds &end, I iterator)
template<typename AI>
 range3d_iterator_with_boundary_flag (const range3d_iterator_with_boundary_flag< AI > &other)
 range3d_iterator_with_boundary_flag (const range3d_iterator_with_boundary_flag< I > &other)
 copy constructore

Friends

template<typename AI>
class range3d_iterator_with_boundary_flag
 friend iterator type because we may want to copy a iterator to a const_iterator.

Detailed Description

template<typename I>
class range3d_iterator_with_boundary_flag< I >

a 3D iterator that knows its position in the 3D grid, has a flag indicating whether it is on a boundary, and supports iterating over sub-ranges

Iterator to iterate over a sub-range of 3D data that is given on a grid. Two iterators are considered to be equal, if their positions are equal.

Template Parameters
theinternal iterator that is used to iterate of the original grid without skipping.

Definition at line 43 of file 3d/iterator.hh.

Member Typedef Documentation

◆ internal_iterator

template<typename I>
typedef I range3d_iterator_with_boundary_flag< I >::internal_iterator

data type for the real iterator in the background

Definition at line 56 of file 3d/iterator.hh.

◆ pointer

template<typename I>
typedef I::pointer range3d_iterator_with_boundary_flag< I >::pointer

data type pointer

Definition at line 50 of file 3d/iterator.hh.

◆ reference

template<typename I>
typedef I::reference range3d_iterator_with_boundary_flag< I >::reference

data type reference

Definition at line 47 of file 3d/iterator.hh.

◆ value_type

template<typename I>
typedef I::value_type range3d_iterator_with_boundary_flag< I >::value_type

data value type

Definition at line 53 of file 3d/iterator.hh.

Member Enumeration Documentation

◆ EBoundary

Enumerate to describe the various positions on the domain boundarys. These boundaries correspond to the full domain of the data, not to the sub-range this iteratior works on. I.e. if the sub-range is a subset of the open domain (i.e. without its boundary) then the iterator will never touch the domain boundary.

Enumerator
eb_none 

no boundary

eb_xlow 

at low x-boundary

eb_xhigh 

at high x-boundary

eb_x 

at one of the x-boundaries

eb_ylow 

at low y-boundary

eb_yhigh 

at high y-boundary

eb_y 

at one of the y-boundaries

eb_zlow 

at low x-boundary

eb_zhigh 

at high z-boundary

eb_z 

at one of the z-boundaries

Definition at line 65 of file 3d/iterator.hh.

Constructor & Destructor Documentation

◆ range3d_iterator_with_boundary_flag() [1/5]

template<typename I>
range3d_iterator_with_boundary_flag< I >::range3d_iterator_with_boundary_flag ( )

standard constructor

◆ range3d_iterator_with_boundary_flag() [2/5]

template<typename I>
range3d_iterator_with_boundary_flag< I >::range3d_iterator_with_boundary_flag ( const C3DBounds & pos,
const C3DBounds & size,
const C3DBounds & start,
const C3DBounds & end,
I iterator )

Full constructor of the range iterator

Parameters
positerator position to initialize the iterator with
sizesize of the original data field
startstart of the iterator range
endend of the iterator range
iteratorthe iterator of the underlying 3D data structure

References pos().

◆ range3d_iterator_with_boundary_flag() [3/5]

template<typename I>
range3d_iterator_with_boundary_flag< I >::range3d_iterator_with_boundary_flag ( const C3DBounds & pos)

End iterator, can't be dereferenced This iterator is only there to define the end position of the range_iterator.

Parameters
posend position to set this iterator to.

References pos().

◆ range3d_iterator_with_boundary_flag() [4/5]

template<typename I>
range3d_iterator_with_boundary_flag< I >::range3d_iterator_with_boundary_flag ( const range3d_iterator_with_boundary_flag< I > & other)

copy constructore

References range3d_iterator_with_boundary_flag.

◆ range3d_iterator_with_boundary_flag() [5/5]

template<typename I>
template<typename AI>
range3d_iterator_with_boundary_flag< I >::range3d_iterator_with_boundary_flag ( const range3d_iterator_with_boundary_flag< AI > & other)

Constructor to construct the iterator from one that is based on another iterator type. The usual idea is that a iterator may be converted into it's const variant.

Template Parameters
AIthe other iterator type. Iterator type I must be copy-constructable from type AI
Parameters
other

Definition at line 391 of file 3d/iterator.hh.

References range3d_iterator_with_boundary_flag.

Member Function Documentation

◆ get_boundary_flags()

template<typename I>
int range3d_iterator_with_boundary_flag< I >::get_boundary_flags ( ) const
Returns
the flags describing whether the iterator is on a domain boundary.

◆ get_point()

template<typename I>
internal_iterator range3d_iterator_with_boundary_flag< I >::get_point ( )

Return the internal iterator

◆ operator*()

template<typename I>
reference range3d_iterator_with_boundary_flag< I >::operator* ( ) const
Returns
current value the iterator points to

◆ operator++() [1/2]

template<typename I>
range3d_iterator_with_boundary_flag< I > & range3d_iterator_with_boundary_flag< I >::operator++ ( )

prefix increment

References range3d_iterator_with_boundary_flag.

◆ operator++() [2/2]

template<typename I>
range3d_iterator_with_boundary_flag< I > range3d_iterator_with_boundary_flag< I >::operator++ ( int )

postfix increment

References range3d_iterator_with_boundary_flag.

◆ operator->()

template<typename I>
pointer range3d_iterator_with_boundary_flag< I >::operator-> ( ) const
Returns
pointer to the current value the iterator points to

◆ operator=() [1/2]

template<typename I>
template<typename AI>
range3d_iterator_with_boundary_flag< I > & range3d_iterator_with_boundary_flag< I >::operator= ( const range3d_iterator_with_boundary_flag< AI > & other)

Assignment operator from another type of iterator

Template Parameters
AIother iterator type. The assignment I b = a; with a of type AI must be defined.
Parameters
other

Definition at line 376 of file 3d/iterator.hh.

References range3d_iterator_with_boundary_flag.

◆ operator=() [2/2]

template<typename I>
range3d_iterator_with_boundary_flag< I > & range3d_iterator_with_boundary_flag< I >::operator= ( const range3d_iterator_with_boundary_flag< I > & other)

assignment operator

References range3d_iterator_with_boundary_flag.

◆ pos()

template<typename I>
const C3DBounds & range3d_iterator_with_boundary_flag< I >::pos ( ) const
Returns
the current position within the 3D grid with respect to the full size of the grid.

References range3d_iterator_with_boundary_flag.

Referenced by range3d_iterator_with_boundary_flag(), and range3d_iterator_with_boundary_flag().

◆ range3d_iterator_with_boundary_flag

template<typename I>
template<typename AI>
friend class range3d_iterator_with_boundary_flag
friend

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