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::component_iterator3d_range< MultiComponentContainer3d, N > Class Template Reference

This is some iterator to iterate a 3d container into two Range defined by the indices and strides of the 3d container. More...

#include <component_iterator3d_range.hpp>

Public Types

typedef
std::random_access_iterator3d_tag 
iterator_category
 
typedef
MultiComponentContainer3d::value_type 
Block
 
typedef Block::value_type value_type
 
typedef DPoint3d< int > difference_type
 
typedef value_typepointer
 
typedef value_typereference
 
typedef component_iterator3d_range self
 
typedef
MultiComponentContainer3d::size_type 
size_type
 

Public Member Functions

reference operator* ()
 Dereference assignment operator. Returns the element that the current component_iterator3d_range i point to. More...
 
pointer operator-> ()
 
Constructors & Destructors
 component_iterator3d_range ()
 Constructs a component_iterator3d_range. More...
 
 component_iterator3d_range (MultiComponentContainer3d *c, std::size_t cp, const slip::Range< int > &r1, const slip::Range< int > &r2, const slip::Range< int > &r3)
 Constructs a component_iterator3d_range. More...
 
 component_iterator3d_range (const self &o)
 Constructs a copy of the component_iterator3d_range o. More...
 
Assignment operators and methods
selfoperator= (const self &o)
 Assign a component_iterator3d_range. More...
 
Forward operators addons
selfoperator++ ()
 Preincrement a component_iterator3d_range. Iterate to the next location inside the Range. More...
 
self operator++ (int)
 Postincrement a component_iterator3d_range. Iterate to the next location inside the Range3d. More...
 
Bidirectional operators addons
selfoperator-- ()
 Predecrement a component_iterator3d_range. Iterate to the previous location inside the Range3d. More...
 
self operator-- (int)
 Postdecrement a component_iterator3d_range. Iterate to the previous location inside the Range3d. More...
 
Indices accessors
int x1 () const
 Access to the first index of the current component_iterator3d_range. More...
 
int k () const
 Access to the first index of the current component_iterator3d_range. More...
 
int x2 () const
 Access to the second index of the current component_iterator3d_range. More...
 
int i () const
 Access to the second index of the current component_iterator3d_range. More...
 
int x3 () const
 Access to the third index of the current component_iterator3d_range. More...
 
int j () const
 Access to the third index of the current component_iterator3d_range. More...
 
int cp () const
 Access to the component index of the current component_iterator3d_range. 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...
 

component_iterator3d_range operators addons

selfoperator+= (const difference_type &d)
 component_iterator3d_range addition. More...
 
selfoperator-= (const difference_type &d)
 component_iterator3d_range substraction. More...
 
self operator+ (const difference_type &d)
 component_iterator3d_range addition. More...
 
self operator- (const difference_type &d)
 component_iterator3d_range substraction. More...
 
reference operator[] (difference_type d)
 component_iterator3d_range element assignment operator. Equivalent to *(i + d) = t. More...
 
MultiComponentContainer3d::component_slice_range_iterator slice_begin (size_type row, size_type col)
 component_iterator3d_range element assignment operator. More...
 
MultiComponentContainer3d::component_slice_range_iterator slice_end (size_type row, size_type col)
 component_iterator3d_range element assignment operator. More...
 
MultiComponentContainer3d::component_row_range_iterator row_begin (size_type slice, size_type row)
 component_iterator3d_range element assignment operator. More...
 
MultiComponentContainer3d::component_row_range_iterator row_end (size_type slice, size_type row)
 component_iterator3d_range element assignment operator. More...
 
MultiComponentContainer3d::component_col_range_iterator col_begin (size_type slice, size_type col)
 component_iterator3d_range element assignment operator. More...
 
MultiComponentContainer3d::component_col_range_iterator col_end (size_type slice, size_type col)
 component_iterator3d_range element assignment operator. More...
 
difference_type operator- (const self &i1, const self &i2)
 component_iterator3d_range difference operator. More...
 

Detailed Description

template<class MultiComponentContainer3d, std::size_t N>
class slip::component_iterator3d_range< MultiComponentContainer3d, N >

This is some iterator to iterate a 3d container into two Range defined by the indices and strides of the 3d container.

Author
Denis Arrivault <denis.arrivault_AT_inria.fr>
Version
Fluex 1.0
Date
2013/07/18
Parameters
MultiComponentContainer3dType of 3d container in the component_iterator3d_range
Nnumber of elements in one block
This iterator is an 3d extension of the random_access_iterator.
It is compatible with the bidirectional_iterator of the Standard library. It iterate into a range area defined inside the indices range of the 3d container. Those indices are defined as follows :
iterator3d_conventions.jpg
axis and notation conventions

Definition at line 111 of file component_iterator3d_range.hpp.

Member Typedef Documentation

template<class MultiComponentContainer3d , std::size_t N>
typedef MultiComponentContainer3d::value_type slip::component_iterator3d_range< MultiComponentContainer3d, N >::Block

Definition at line 116 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
typedef DPoint3d<int> slip::component_iterator3d_range< MultiComponentContainer3d, N >::difference_type

Definition at line 118 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
typedef std::random_access_iterator3d_tag slip::component_iterator3d_range< MultiComponentContainer3d, N >::iterator_category

Definition at line 115 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
typedef value_type* slip::component_iterator3d_range< MultiComponentContainer3d, N >::pointer

Definition at line 119 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
typedef value_type& slip::component_iterator3d_range< MultiComponentContainer3d, N >::reference

Definition at line 120 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
typedef component_iterator3d_range slip::component_iterator3d_range< MultiComponentContainer3d, N >::self

Definition at line 122 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
typedef MultiComponentContainer3d::size_type slip::component_iterator3d_range< MultiComponentContainer3d, N >::size_type

Definition at line 124 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
typedef Block::value_type slip::component_iterator3d_range< MultiComponentContainer3d, N >::value_type

Definition at line 117 of file component_iterator3d_range.hpp.

Constructor & Destructor Documentation

template<class MultiComponentContainer3d , std::size_t N>
slip::component_iterator3d_range< MultiComponentContainer3d, N >::component_iterator3d_range ( )
inline

Constructs a component_iterator3d_range.

The range to iterate is in this case the full container

Definition at line 134 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
slip::component_iterator3d_range< MultiComponentContainer3d, N >::component_iterator3d_range ( MultiComponentContainer3d *  c,
std::size_t  cp,
const slip::Range< int > &  r1,
const slip::Range< int > &  r2,
const slip::Range< int > &  r3 
)
inline

Constructs a component_iterator3d_range.

Parameters
cpointer to an existing 3d container
cpindex of the component to iterate
r1Range<int> defining the range of indices of the first axis to iterate
r2Range<int> defining the range of indices of the second axis to iterate
r3Range<int> defining the range of indices of the third axis to iterate
Precondition
range indices must be inside those of the 3d container

Definition at line 150 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
slip::component_iterator3d_range< MultiComponentContainer3d, N >::component_iterator3d_range ( const self o)
inline

Constructs a copy of the component_iterator3d_range o.

Parameters
ocomponent_iterator3d_range to copy.

Definition at line 167 of file component_iterator3d_range.hpp.

Member Function Documentation

template<class MultiComponentContainer3d , std::size_t N>
MultiComponentContainer3d::component_col_range_iterator slip::component_iterator3d_range< MultiComponentContainer3d, N >::col_begin ( size_type  slice,
size_type  col 
)
inline

component_iterator3d_range element assignment operator.

Parameters
sliceoffset.
rowoffset.
Returns
a range_col_iterator to the first element of range at the slice slice of the slice range and at the col col of the col range

Definition at line 625 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
MultiComponentContainer3d::component_col_range_iterator slip::component_iterator3d_range< MultiComponentContainer3d, N >::col_end ( size_type  slice,
size_type  col 
)
inline

component_iterator3d_range element assignment operator.

Parameters
sliceoffset.
rowoffset.
Returns
a range_col_iterator to the past-the-end element of range at the slice slice of the slice range and at the col col of the col range

Definition at line 640 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
int slip::component_iterator3d_range< MultiComponentContainer3d, N >::cp ( ) const
inline

Access to the component index of the current component_iterator3d_range.

Returns
the component index

Definition at line 715 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
int slip::component_iterator3d_range< MultiComponentContainer3d, N >::i ( ) const
inline

Access to the second index of the current component_iterator3d_range.

Returns
the second index.

Definition at line 687 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
int slip::component_iterator3d_range< MultiComponentContainer3d, N >::j ( ) const
inline

Access to the third index of the current component_iterator3d_range.

Returns
the third index.

Definition at line 705 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
int slip::component_iterator3d_range< MultiComponentContainer3d, N >::k ( ) const
inline

Access to the first index of the current component_iterator3d_range.

Returns
the first index.

Definition at line 668 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
reference slip::component_iterator3d_range< MultiComponentContainer3d, N >::operator* ( )
inline

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

Returns
a component_iterator3d_range reference.

Definition at line 211 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
self slip::component_iterator3d_range< MultiComponentContainer3d, N >::operator+ ( const difference_type d)
inline

component_iterator3d_range addition.

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

Definition at line 491 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
self& slip::component_iterator3d_range< MultiComponentContainer3d, N >::operator++ ( )
inline

Preincrement a component_iterator3d_range. Iterate to the next location inside the Range.

Definition at line 232 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
self slip::component_iterator3d_range< MultiComponentContainer3d, N >::operator++ ( int  )
inline

Postincrement a component_iterator3d_range. Iterate to the next location inside the Range3d.

Definition at line 272 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
self& slip::component_iterator3d_range< MultiComponentContainer3d, N >::operator+= ( const difference_type d)
inline

component_iterator3d_range addition.

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

Definition at line 453 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
self slip::component_iterator3d_range< MultiComponentContainer3d, N >::operator- ( const difference_type d)
inline

component_iterator3d_range substraction.

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

Definition at line 506 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
self& slip::component_iterator3d_range< MultiComponentContainer3d, N >::operator-- ( )
inline

Predecrement a component_iterator3d_range. Iterate to the previous location inside the Range3d.

Definition at line 291 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
self slip::component_iterator3d_range< MultiComponentContainer3d, N >::operator-- ( int  )
inline

Postdecrement a component_iterator3d_range. Iterate to the previous location inside the Range3d.

Definition at line 333 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
self& slip::component_iterator3d_range< MultiComponentContainer3d, N >::operator-= ( const difference_type d)
inline

component_iterator3d_range substraction.

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

Definition at line 472 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
pointer slip::component_iterator3d_range< MultiComponentContainer3d, N >::operator-> ( )
inline

Definition at line 217 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
self& slip::component_iterator3d_range< MultiComponentContainer3d, N >::operator= ( const self o)
inline

Assign a component_iterator3d_range.

Assign elements of component_iterator3d_range in o.

Parameters
ocomponent_iterator3d_range to get the values from.
Returns
a component_iterator3d_range reference.

Definition at line 186 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
reference slip::component_iterator3d_range< MultiComponentContainer3d, N >::operator[] ( difference_type  d)
inline

component_iterator3d_range element assignment operator. Equivalent to *(i + d) = t.

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

Definition at line 543 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
MultiComponentContainer3d::component_row_range_iterator slip::component_iterator3d_range< MultiComponentContainer3d, N >::row_begin ( size_type  slice,
size_type  row 
)
inline

component_iterator3d_range element assignment operator.

Parameters
sliceoffset.
rowoffset.
Returns
a row_range_iterator to the first element of range at the slice slice of the slice range and the row row of the row range

Definition at line 593 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
MultiComponentContainer3d::component_row_range_iterator slip::component_iterator3d_range< MultiComponentContainer3d, N >::row_end ( size_type  slice,
size_type  row 
)
inline

component_iterator3d_range element assignment operator.

Parameters
sliceoffset.
rowoffset.
Returns
a row_range_iterator to the past-the-end element of range at the slice slice of the slice range and the row row of the row range

Definition at line 609 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
MultiComponentContainer3d::component_slice_range_iterator slip::component_iterator3d_range< MultiComponentContainer3d, N >::slice_begin ( size_type  row,
size_type  col 
)
inline

component_iterator3d_range element assignment operator.

Parameters
rowoffset.
coloffset.
Returns
a slice_range_iterator to the first element of range at the row row of the row range and the col col of the col range

Definition at line 562 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
MultiComponentContainer3d::component_slice_range_iterator slip::component_iterator3d_range< MultiComponentContainer3d, N >::slice_end ( size_type  row,
size_type  col 
)
inline

component_iterator3d_range element assignment operator.

Parameters
rowoffset.
coloffset.
Returns
a slice_range_iterator to the past-the-end element of range at the row row of the row range and the col col of the col range

Definition at line 578 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
int slip::component_iterator3d_range< MultiComponentContainer3d, N >::x1 ( ) const
inline

Access to the first index of the current component_iterator3d_range.

Returns
the first index.

Definition at line 659 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
int slip::component_iterator3d_range< MultiComponentContainer3d, N >::x2 ( ) const
inline

Access to the second index of the current component_iterator3d_range.

Returns
the second index.

Definition at line 678 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
int slip::component_iterator3d_range< MultiComponentContainer3d, N >::x3 ( ) const
inline

Access to the third index of the current component_iterator3d_range.

Returns
the third index.

Definition at line 696 of file component_iterator3d_range.hpp.

Friends And Related Function Documentation

template<class MultiComponentContainer3d , std::size_t N>
bool operator!= ( const self i1,
const self i2 
)
friend

Inequality operator.

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

Definition at line 370 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
difference_type operator- ( const self i1,
const self i2 
)
friend

component_iterator3d_range difference operator.

Parameters
i1first component_iterator3d_range.
i2second component_iterator3d_range.
Returns
a difference_type d such that i1 = i2 + stride*d.
Precondition
Either i1 is reachable from i2, or i2 is reachable from i1.
Both strides must be equal

Definition at line 522 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
bool operator< ( const self i1,
const self i2 
)
friend

< operator.

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

Definition at line 390 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
bool operator<= ( const self i1,
const self i2 
)
friend

<= operator.

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

Definition at line 418 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
bool operator== ( const self i1,
const self i2 
)
friend

Equality operator.

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

Definition at line 354 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
bool operator> ( const self i1,
const self i2 
)
friend

operator.

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

Definition at line 404 of file component_iterator3d_range.hpp.

template<class MultiComponentContainer3d , std::size_t N>
bool operator>= ( const self i1,
const self i2 
)
friend

>= operator.

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

Definition at line 432 of file component_iterator3d_range.hpp.


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