range3d_iterator_with_boundary_flag< I > Class Template Reference
Basic data strctures and functions

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 C3DBounds & | pos () 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

  the | internal 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

template<typename I>

enum range3d_iterator_with_boundary_flag::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

  pos | iterator position to initialize the iterator with
  size | size of the original data field
  start | start of the iterator range
  end | end of the iterator range
  iterator | the 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

  pos | end 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

  AI | the 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

  AI | other 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().

## Friends And Related Symbol Documentation

## range3d_iterator_with_boundary_flag

template<typename I>
template<typename AI>

friend class range3d_iterator_with_boundary_flag

friend

friend iterator type because we may want to copy a iterator to a const_iterator.

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

References range3d_iterator_with_boundary_flag.

Referenced by operator++(), operator++(), operator=(), operator=(), pos(), range3d_iterator_with_boundary_flag(), range3d_iterator_with_boundary_flag, and range3d_iterator_with_boundary_flag().

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

- 3d/iterator.hh