SLIP  1.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | List of all members
slip::iterator4d_box< Container4D > Class Template Reference

This is some iterator to iterate a 4d container into a Box area defined by the subscripts of the 4d container. More...

#include <iterator4d_box.hpp>

Public Types

typedef
std::random_access_iterator4d_tag 
iterator_category
 
typedef Container4D::value_type value_type
 
typedef DPoint4d< int > difference_type
 
typedef slip::DPoint3d< int > diff3d
 
typedef slip::DPoint2d< int > diff2d
 
typedef Container4D::pointer pointer
 
typedef Container4D::reference reference
 
typedef iterator4d_box self
 
typedef Container4D::size_type size_type
 

Public Member Functions

reference operator* ()
 Dereference assignment operator. Returns the element that the current iterator4d_box i point to. More...
 
const reference operator* () const
 Dereference operator. Returns the element that the current iterator4d_box i point to. More...
 
pointer operator-> () const
 
pointer operator-> ()
 
Constructors & Destructors
 iterator4d_box ()
 Constructs a iterator4d_box. More...
 
 iterator4d_box (Container4D *c, const Box4d< int > &b)
 Constructs a iterator4d_box. More...
 
 iterator4d_box (const self &o)
 Constructs a copy of the iterator4d_box o. More...
 
Assignment operators and methods
selfoperator= (const self &o)
 Assign a iterator4d_box. More...
 
Forward operators addons
selfoperator++ ()
 Preincrement a iterator4d_box. Iterate to the next location inside the Box4d. More...
 
self operator++ (int)
 Postincrement a iterator4d_box. Iterate to the next location inside the Box4d. More...
 
Bidirectional operators addons
selfoperator-- ()
 Predecrement a iterator4d_box. Iterate to the previous location inside the Box4d. More...
 
self operator-- (int)
 Postdecrement a iterator4d_box. Iterate to the previous location inside the Box4d. More...
 
Subscripts accessors
int x1 () const
 Access to the first subscript of the current iterator4d_box. More...
 
int t () const
 Access to the first subscript of the current iterator4d_box. More...
 
int x2 () const
 Access to the second subscript of the current iterator4d_box. More...
 
int k () const
 Access to the second subscript of the current iterator4d_box. More...
 
int x3 () const
 Access to the third subscript of the current iterator4d_box. More...
 
int i () const
 Access to the third subscript of the current iterator4d_box. More...
 
int x4 () const
 Access to the fourth subscript of the current iterator4d_box. More...
 
int j () const
 Access to the fourth subscript of the current iterator4d_box. More...
 

Friends

Equality comparable operators
bool operator== (const self &i1, const self &i2)
 Equality operator. More...
 
bool operator!= (const self &i1, const self &i2)
 Inequality operator. More...
 
Strict Weakly comparable operators
bool operator< (const self &i1, const self &i2)
 < operator. More...
 
bool operator> (const self &i1, const self &i2)
 

operator.

More...
 
bool operator<= (const self &i1, const self &i2)
 <= operator. More...
 
bool operator>= (const self &i1, const self &i2)
 >= operator. More...
 

iterator4d_box operators addons

selfoperator+= (const difference_type &d)
 iterator4d_box addition. More...
 
selfoperator-= (const difference_type &d)
 iterator4d_box substraction. More...
 
self operator+ (const difference_type &d)
 iterator4d_box addition. More...
 
self operator- (const difference_type &d)
 iterator4d_box substraction. More...
 
reference operator[] (difference_type d)
 iterator4d_box element assignment operator. Equivalent to *(k + d) = t. More...
 
pointer operator[] (diff3d d)
 iterator4d_box element assignment operator. Equivalent to *(k + d) = t. More...
 
pointeroperator[] (diff2d d)
 iterator4d_box element assignment operator. Equivalent to *(k + d) = t. More...
 
pointer ** operator[] (int n)
 iterator4d_box element assignment operator. Equivalent to *(k + n). More...
 
const pointer ** operator[] (int n) const
 iterator4d_box element assignment operator. Equivalent to *(k + n). More...
 
Container4D::slab_iterator slab_begin (size_type slice, size_type row, size_type col)
 iterator4d_box element assignment operator. More...
 
Container4D::slab_iterator slab_end (size_type slice, size_type row, size_type col)
 iterator4d_box element assignment operator. More...
 
Container4D::slice_iterator slice_begin (size_type slab, size_type row, size_type col)
 iterator4d_box element assignment operator. More...
 
Container4D::slice_iterator slice_end (size_type slab, size_type row, size_type col)
 iterator4d_box element assignment operator. More...
 
Container4D::row_iterator row_begin (size_type slab, size_type slice, size_type row)
 iterator4d_box element assignment operator. More...
 
Container4D::row_iterator row_end (size_type slab, size_type slice, size_type row)
 iterator4d_box element assignment operator. More...
 
Container4D::col_iterator col_begin (size_type slab, size_type slice, size_type col)
 iterator4d_box element assignment operator. More...
 
Container4D::col_iterator col_end (size_type slab, size_type slice, size_type col)
 iterator4d_box element assignment operator. More...
 
difference_type operator- (const self &i1, const self &i2)
 iterator4d_box difference operator. More...
 

Detailed Description

template<class Container4D>
class slip::iterator4d_box< Container4D >

This is some iterator to iterate a 4d container into a Box area defined by the subscripts of the 4d container.

Version
Fluex 1.0
Date
2013/07/04
Author
Denis Arrivault <denis.arrivault_AT_inria.fr>
Parameters
Container4DType of 4d container in the iterator4d_box
Description:
This iterator is an 4d extension of the random_access_iterator. It is compatible with the bidirectional_iterator of the Standard library. It iterate into a box area defined inside the subscripts range of the 4d container. Those subscripts are defined as follows :
iterator4d_conventions.jpg
axis and notation conventions

Definition at line 115 of file iterator4d_box.hpp.

Member Typedef Documentation

template<class Container4D >
typedef slip::DPoint2d<int> slip::iterator4d_box< Container4D >::diff2d

Definition at line 123 of file iterator4d_box.hpp.

template<class Container4D >
typedef slip::DPoint3d<int> slip::iterator4d_box< Container4D >::diff3d

Definition at line 122 of file iterator4d_box.hpp.

template<class Container4D >
typedef DPoint4d<int> slip::iterator4d_box< Container4D >::difference_type

Definition at line 121 of file iterator4d_box.hpp.

template<class Container4D >
typedef std::random_access_iterator4d_tag slip::iterator4d_box< Container4D >::iterator_category

Definition at line 119 of file iterator4d_box.hpp.

template<class Container4D >
typedef Container4D::pointer slip::iterator4d_box< Container4D >::pointer

Definition at line 124 of file iterator4d_box.hpp.

template<class Container4D >
typedef Container4D::reference slip::iterator4d_box< Container4D >::reference

Definition at line 125 of file iterator4d_box.hpp.

template<class Container4D >
typedef iterator4d_box slip::iterator4d_box< Container4D >::self

Definition at line 127 of file iterator4d_box.hpp.

template<class Container4D >
typedef Container4D::size_type slip::iterator4d_box< Container4D >::size_type

Definition at line 128 of file iterator4d_box.hpp.

template<class Container4D >
typedef Container4D::value_type slip::iterator4d_box< Container4D >::value_type

Definition at line 120 of file iterator4d_box.hpp.

Constructor & Destructor Documentation

template<class Container4D >
slip::iterator4d_box< Container4D >::iterator4d_box ( )
inline

Constructs a iterator4d_box.

The box to iterate is in this case the full container

Definition at line 139 of file iterator4d_box.hpp.

template<class Container4D >
slip::iterator4d_box< Container4D >::iterator4d_box ( Container4D *  c,
const Box4d< int > &  b 
)
inline

Constructs a iterator4d_box.

Parameters
cpointer to an existing 4d container
bBox4d<int> defining the range of subscripts to iterate
Precondition
box subscripts must be inside those of the 4d container

Definition at line 149 of file iterator4d_box.hpp.

template<class Container4D >
slip::iterator4d_box< Container4D >::iterator4d_box ( const self o)
inline

Constructs a copy of the iterator4d_box o.

Parameters
oiterator4d_box to copy.

Definition at line 162 of file iterator4d_box.hpp.

Member Function Documentation

template<class Container4D >
Container4D::col_iterator slip::iterator4d_box< Container4D >::col_begin ( size_type  slab,
size_type  slice,
size_type  col 
)
inline

iterator4d_box element assignment operator.

Parameters
slaboffset.
sliceslice offset.
colcol offset.
Returns
a col_iterator to the first element of the line defined in the container by (slab,slice,col) indices.
Note
Be careful, row_iterators and col_iterators are iterating threw a row and a column respectively. It is not the case with slab and slice iterators which are iterating cross slabs and slices respectively.
Todo:
add assert

Definition at line 802 of file iterator4d_box.hpp.

template<class Container4D >
Container4D::col_iterator slip::iterator4d_box< Container4D >::col_end ( size_type  slab,
size_type  slice,
size_type  col 
)
inline

iterator4d_box element assignment operator.

Parameters
slaboffset.
sliceslice offset.
colcol offset.
Returns
a col_iterator to the past-the-end element of the line defined in the container by (slab,slice,col) indices.
Note
Be careful, row_iterators and col_iterators are iterating threw a row and a column respectively. It is not the case with slab and slice iterators which are iterating cross slabs and slices respectively.
Todo:
add assert

Definition at line 820 of file iterator4d_box.hpp.

template<class Container4D >
int slip::iterator4d_box< Container4D >::i ( ) const
inline

Access to the third subscript of the current iterator4d_box.

Returns
the third subscript.

Definition at line 882 of file iterator4d_box.hpp.

template<class Container4D >
int slip::iterator4d_box< Container4D >::j ( ) const
inline

Access to the fourth subscript of the current iterator4d_box.

Returns
the fourth subscript.

Definition at line 901 of file iterator4d_box.hpp.

template<class Container4D >
int slip::iterator4d_box< Container4D >::k ( ) const
inline

Access to the second subscript of the current iterator4d_box.

Returns
the second subscript.

Definition at line 864 of file iterator4d_box.hpp.

template<class Container4D >
reference slip::iterator4d_box< Container4D >::operator* ( )
inline

Dereference assignment operator. Returns the element that the current iterator4d_box i point to.

Returns
a iterator4d_box reference.

Definition at line 203 of file iterator4d_box.hpp.

template<class Container4D >
const reference slip::iterator4d_box< Container4D >::operator* ( ) const
inline

Dereference operator. Returns the element that the current iterator4d_box i point to.

Returns
a const iterator4d_box reference.

Definition at line 217 of file iterator4d_box.hpp.

template<class Container4D >
self slip::iterator4d_box< Container4D >::operator+ ( const difference_type d)
inline

iterator4d_box addition.

Parameters
ddifference_type
Returns
a iterator4d_box reference
Precondition
All the iterators between the current iterator i and i + d must be dereferenceable.

Definition at line 579 of file iterator4d_box.hpp.

template<class Container4D >
self& slip::iterator4d_box< Container4D >::operator++ ( )
inline

Preincrement a iterator4d_box. Iterate to the next location inside the Box4d.

Definition at line 246 of file iterator4d_box.hpp.

template<class Container4D >
self slip::iterator4d_box< Container4D >::operator++ ( int  )
inline

Postincrement a iterator4d_box. Iterate to the next location inside the Box4d.

Definition at line 324 of file iterator4d_box.hpp.

template<class Container4D >
self& slip::iterator4d_box< Container4D >::operator+= ( const difference_type d)
inline

iterator4d_box addition.

Parameters
ddifference_type
Returns
a iterator4d_box reference
Precondition
All the iterators between the current iterator i and i + d must be dereferenceable.

Definition at line 533 of file iterator4d_box.hpp.

template<class Container4D >
self slip::iterator4d_box< Container4D >::operator- ( const difference_type d)
inline

iterator4d_box substraction.

Parameters
ddifference_type
Returns
a iterator4d_box reference
Precondition
All the iterators between the current iterator i and i - d must be dereferenceable.

Definition at line 594 of file iterator4d_box.hpp.

template<class Container4D >
self& slip::iterator4d_box< Container4D >::operator-- ( )
inline

Predecrement a iterator4d_box. Iterate to the previous location inside the Box4d.

Definition at line 343 of file iterator4d_box.hpp.

template<class Container4D >
self slip::iterator4d_box< Container4D >::operator-- ( int  )
inline

Postdecrement a iterator4d_box. Iterate to the previous location inside the Box4d.

Definition at line 421 of file iterator4d_box.hpp.

template<class Container4D >
self& slip::iterator4d_box< Container4D >::operator-= ( const difference_type d)
inline

iterator4d_box substraction.

Parameters
ddifference_type
Returns
a iterator4d_box reference
Precondition
All the iterators between the current iterator i and i - d must be dereferenceable.

Definition at line 556 of file iterator4d_box.hpp.

template<class Container4D >
pointer slip::iterator4d_box< Container4D >::operator-> ( ) const
inline

Definition at line 224 of file iterator4d_box.hpp.

template<class Container4D >
pointer slip::iterator4d_box< Container4D >::operator-> ( )
inline

Definition at line 230 of file iterator4d_box.hpp.

template<class Container4D >
self& slip::iterator4d_box< Container4D >::operator= ( const self o)
inline

Assign a iterator4d_box.

Assign elements of iterator4d_box in o.

Parameters
oiterator4d_box to get the values from.
Returns
a iterator4d_box reference.

Definition at line 180 of file iterator4d_box.hpp.

template<class Container4D >
reference slip::iterator4d_box< Container4D >::operator[] ( difference_type  d)
inline

iterator4d_box element assignment operator. Equivalent to *(k + d) = t.

Parameters
ddifference_type.
Returns
a reference to the 4d container elements
Precondition
(k + d) exists and is dereferenceable.
Postcondition
k[d] is a copy of reference.

Definition at line 625 of file iterator4d_box.hpp.

template<class Container4D >
pointer slip::iterator4d_box< Container4D >::operator[] ( diff3d  d)
inline

iterator4d_box element assignment operator. Equivalent to *(k + d) = t.

Parameters
doffset.
Returns
a pointer to the 4d container elements
Precondition
(k + d) exists and is dereferenceable.
Postcondition
k[d] is a copy of pointer.
Todo:
add assert

Definition at line 640 of file iterator4d_box.hpp.

template<class Container4D >
pointer* slip::iterator4d_box< Container4D >::operator[] ( diff2d  d)
inline

iterator4d_box element assignment operator. Equivalent to *(k + d) = t.

Parameters
doffset.
Returns
a pointer to the 4d container elements
Precondition
(k + d) exists and is dereferenceable.
Postcondition
k[d] is a copy of pointer.
Todo:
add assert

Definition at line 655 of file iterator4d_box.hpp.

template<class Container4D >
pointer** slip::iterator4d_box< Container4D >::operator[] ( int  n)
inline

iterator4d_box element assignment operator. Equivalent to *(k + n).

Parameters
noffset.
Returns
a pointer of pointer to the 4d container elements
Precondition
(k + n) exists and is dereferenceable.
Postcondition
k[n] is a copy of pointer of pointer.
Todo:
add assert

Definition at line 670 of file iterator4d_box.hpp.

template<class Container4D >
const pointer** slip::iterator4d_box< Container4D >::operator[] ( int  n) const
inline

iterator4d_box element assignment operator. Equivalent to *(k + n).

Parameters
noffset.
Returns
a const pointer of pointer to the 4d container elements
Precondition
(k + n) exists and is dereferenceable.
Todo:
add assert

Definition at line 686 of file iterator4d_box.hpp.

template<class Container4D >
Container4D::row_iterator slip::iterator4d_box< Container4D >::row_begin ( size_type  slab,
size_type  slice,
size_type  row 
)
inline

iterator4d_box element assignment operator.

Parameters
slaboffset.
sliceslice offset.
rowoffset.
Returns
a row_iterator to the first element of the line defined in the container by (slab,slice,row) indices.
Note
Be careful, row_iterators and col_iterators are iterating threw a row and a column respectively. It is not the case with slab and slice iterators which are iterating cross slabs and slices respectively.
Todo:
add assert

Definition at line 767 of file iterator4d_box.hpp.

template<class Container4D >
Container4D::row_iterator slip::iterator4d_box< Container4D >::row_end ( size_type  slab,
size_type  slice,
size_type  row 
)
inline

iterator4d_box element assignment operator.

Parameters
slaboffset.
sliceslice offset.
rowoffset.
Returns
a row_iterator to the past-the-end element of the line defined in the container by (slab,slice,row) indices.
Note
Be careful, row_iterators and col_iterators are iterating threw a row and a column respectively. It is not the case with slab and slice iterators which are iterating cross slabs and slices respectively.
Todo:
add assert

Definition at line 785 of file iterator4d_box.hpp.

template<class Container4D >
Container4D::slab_iterator slip::iterator4d_box< Container4D >::slab_begin ( size_type  slice,
size_type  row,
size_type  col 
)
inline

iterator4d_box element assignment operator.

Parameters
sliceoffset.
rowoffset.
coloffset
Returns
a slab_iterator to the first element of the line defined in the container by (slice,row,col) indices.
Todo:
add assert

Definition at line 701 of file iterator4d_box.hpp.

template<class Container4D >
Container4D::slab_iterator slip::iterator4d_box< Container4D >::slab_end ( size_type  slice,
size_type  row,
size_type  col 
)
inline

iterator4d_box element assignment operator.

Parameters
sliceoffset.
rowrow offset.
colcol offset.
Returns
a slab_iterator to the past-the-end element of the line defined in the container by (slice,row,col) indices.
Todo:
add assert

Definition at line 717 of file iterator4d_box.hpp.

template<class Container4D >
Container4D::slice_iterator slip::iterator4d_box< Container4D >::slice_begin ( size_type  slab,
size_type  row,
size_type  col 
)
inline

iterator4d_box element assignment operator.

Parameters
slaboffset.
rowoffset.
coloffset
Returns
a slice_iterator to the first element of the line defined in the container by (slab,row,col) indices.
Todo:
add assert

Definition at line 733 of file iterator4d_box.hpp.

template<class Container4D >
Container4D::slice_iterator slip::iterator4d_box< Container4D >::slice_end ( size_type  slab,
size_type  row,
size_type  col 
)
inline

iterator4d_box element assignment operator.

Parameters
slaboffset.
rowrow offset.
colcol offset.
Returns
a slice_iterator to the past-the-end element of the line defined in the container by (slab,row,col) indices.
Todo:
add assert

Definition at line 749 of file iterator4d_box.hpp.

template<class Container4D >
int slip::iterator4d_box< Container4D >::t ( ) const
inline

Access to the first subscript of the current iterator4d_box.

Returns
the first subscript.

Definition at line 846 of file iterator4d_box.hpp.

template<class Container4D >
int slip::iterator4d_box< Container4D >::x1 ( ) const
inline

Access to the first subscript of the current iterator4d_box.

Returns
the first subscript.

Definition at line 837 of file iterator4d_box.hpp.

template<class Container4D >
int slip::iterator4d_box< Container4D >::x2 ( ) const
inline

Access to the second subscript of the current iterator4d_box.

Returns
the second subscript.

Definition at line 855 of file iterator4d_box.hpp.

template<class Container4D >
int slip::iterator4d_box< Container4D >::x3 ( ) const
inline

Access to the third subscript of the current iterator4d_box.

Returns
the third subscript.

Definition at line 873 of file iterator4d_box.hpp.

template<class Container4D >
int slip::iterator4d_box< Container4D >::x4 ( ) const
inline

Access to the fourth subscript of the current iterator4d_box.

Returns
the fourth subscript.

Definition at line 892 of file iterator4d_box.hpp.

Friends And Related Function Documentation

template<class Container4D >
bool operator!= ( const self i1,
const self i2 
)
friend

Inequality operator.

Parameters
i1first iterator4d_box.
i2second iterator4d_box.
Returns
true if !(i1 == i2)

Definition at line 457 of file iterator4d_box.hpp.

template<class Container4D >
difference_type operator- ( const self i1,
const self i2 
)
friend

iterator4d_box difference operator.

Parameters
i1first iterator4d_box.
i2second iterator4d_box.
Returns
a difference_type d such that i1 = i2 + d.
Precondition
Either i1 is reachable from i2, or i2 is reachable from i1.

Definition at line 609 of file iterator4d_box.hpp.

template<class Container4D >
bool operator< ( const self i1,
const self i2 
)
friend

< operator.

Parameters
i1first iterator4d_box.
i2second iterator4d_box.
Returns
true i1.pos_ < i2_pos

Definition at line 476 of file iterator4d_box.hpp.

template<class Container4D >
bool operator<= ( const self i1,
const self i2 
)
friend

<= operator.

Parameters
i1first iterator4d_box.
i2second iterator4d_box.
Returns
true if !(i2 < i1)

Definition at line 502 of file iterator4d_box.hpp.

template<class Container4D >
bool operator== ( const self i1,
const self i2 
)
friend

Equality operator.

Parameters
i1first iterator4d_box.
i2second iterator4d_box.
Returns
true if i1 and i2 point to the same element of the 4d container

Definition at line 442 of file iterator4d_box.hpp.

template<class Container4D >
bool operator> ( const self i1,
const self i2 
)
friend

operator.

Parameters
i1first iterator4d_box.
i2second iterator4d_box.
Returns
true i2 < i1

Definition at line 489 of file iterator4d_box.hpp.

template<class Container4D >
bool operator>= ( const self i1,
const self i2 
)
friend

>= operator.

Parameters
i1first iterator4d_box.
i2second iterator4d_box.
Returns
true if !(i1 < i2)

Definition at line 514 of file iterator4d_box.hpp.


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