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::const_component_iterator2d_range< MultiComponentContainer2D, N > Class Template Reference

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

#include <component_iterator2d_range.hpp>

Public Types

typedef
std::random_access_iterator2d_tag 
iterator_category
 
typedef
MultiComponentContainer2D::value_type 
Block
 
typedef Block::value_type value_type
 
typedef DPoint2d< int > difference_type
 
typedef value_type const * pointer
 
typedef value_type const & reference
 
typedef
const_component_iterator2d_range 
self
 
typedef
MultiComponentContainer2D::size_type 
size_type
 

Public Member Functions

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

const_component_iterator2d_range operators addons

selfoperator+= (const difference_type &d)
 const_component_iterator2d_range addition. More...
 
selfoperator-= (const difference_type &d)
 const_component_iterator2d_range substraction. More...
 
self operator+ (const difference_type &d)
 const_component_iterator2d_range addition. More...
 
self operator- (const difference_type &d)
 const_component_iterator2d_range substraction. More...
 
reference operator[] (difference_type d) const
 const_component_iterator2d_range element assignment operator. Equivalent to *(i + d). More...
 
MultiComponentContainer2D::const_row_range_iterator row_begin (size_type row) const
 const_component_iterator2d_range element assignment operator. More...
 
MultiComponentContainer2D::const_row_range_iterator row_end (size_type row) const
 const_component_iterator2d_range element assignment operator. More...
 
MultiComponentContainer2D::const_col_range_iterator col_begin (size_type col) const
 const_component_iterator2d_range element assignment operator. More...
 
MultiComponentContainer2D::const_col_range_iterator col_end (size_type col) const
 const_component_iterator2d_range element assignment operator. More...
 
difference_type operator- (const self &i1, const self &i2)
 const_component_iterator2d_range difference operator. More...
 

Detailed Description

template<class MultiComponentContainer2D, std::size_t N>
class slip::const_component_iterator2d_range< MultiComponentContainer2D, N >

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

Author
Denis Arrivault <arrivault_AT_sic.univ-poitiers.fr>
Version
0.0.1
Date
27/02/2008
Parameters
MultiComponentContainer2DType of 2d container in the const_component_iterator2d_range
Nnumber of elements in one block
This iterator is an 2d 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 2d container. Those indices are defined as follows :
iterator2d_conventions.jpg
axis and notation conventions

Definition at line 657 of file component_iterator2d_range.hpp.

Member Typedef Documentation

template<class MultiComponentContainer2D , std::size_t N>
typedef MultiComponentContainer2D::value_type slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::Block

Definition at line 662 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
typedef DPoint2d<int> slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::difference_type

Definition at line 664 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
typedef std::random_access_iterator2d_tag slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::iterator_category

Definition at line 661 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
typedef value_type const* slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::pointer

Definition at line 665 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
typedef value_type const& slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::reference

Definition at line 666 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
typedef const_component_iterator2d_range slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::self

Definition at line 668 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
typedef MultiComponentContainer2D::size_type slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::size_type

Definition at line 670 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
typedef Block::value_type slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::value_type

Definition at line 663 of file component_iterator2d_range.hpp.

Constructor & Destructor Documentation

template<class MultiComponentContainer2D , std::size_t N>
slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::const_component_iterator2d_range ( )
inline

Constructs a const_component_iterator2d_range.

The range to iterate is in this case the full container

Definition at line 680 of file component_iterator2d_range.hpp.

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

Constructs a const_component_iterator2d_range.

Parameters
cpointer to an existing 2d container
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
Precondition
range indices must be inside those of the 2d container

Definition at line 694 of file component_iterator2d_range.hpp.

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

Constructs a copy of the const_component_iterator2d_range o.

Parameters
oconst_component_iterator2d_range to copy.

Definition at line 705 of file component_iterator2d_range.hpp.

Member Function Documentation

template<class MultiComponentContainer2D , std::size_t N>
MultiComponentContainer2D::const_col_range_iterator slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::col_begin ( size_type  col) const
inline

const_component_iterator2d_range element assignment operator.

Parameters
rowoffset.
Returns
a const col_range_iterator to the first element of range at the col col of the container
Todo:
add assert

Definition at line 1115 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
MultiComponentContainer2D::const_col_range_iterator slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::col_end ( size_type  col) const
inline

const_component_iterator2d_range element assignment operator.

Parameters
rowoffset.
Returns
a const col_range_iterator to the past-the-end element of range at the col col of the container
Todo:
add assert

Definition at line 1130 of file component_iterator2d_range.hpp.

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

Access to the component index of the current const_component_iterator2d_box.

Returns
the component index

Definition at line 1186 of file component_iterator2d_range.hpp.

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

Access to the first index of the current const_component_iterator2d_range.

Returns
the first index.

Definition at line 1158 of file component_iterator2d_range.hpp.

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

Access to the second index of the current const_component_iterator2d_range.

Returns
the second index.

Definition at line 1176 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
reference slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::operator* ( ) const
inline

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

Returns
a const const_component_iterator2d_range reference.

Definition at line 748 of file component_iterator2d_range.hpp.

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

const_component_iterator2d_range addition.

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

Definition at line 1018 of file component_iterator2d_range.hpp.

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

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

Definition at line 772 of file component_iterator2d_range.hpp.

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

Postincrement a const_component_iterator2d_range. Iterate to the next location inside the Range2d.

Definition at line 807 of file component_iterator2d_range.hpp.

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

const_component_iterator2d_range addition.

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

Definition at line 982 of file component_iterator2d_range.hpp.

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

const_component_iterator2d_range substraction.

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

Definition at line 1033 of file component_iterator2d_range.hpp.

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

Predecrement a const_component_iterator2d_range. Iterate to the previous location inside the Range2d.

Definition at line 826 of file component_iterator2d_range.hpp.

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

Postdecrement a const_component_iterator2d_range. Iterate to the previous location inside the Range2d.

Definition at line 859 of file component_iterator2d_range.hpp.

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

const_component_iterator2d_range substraction.

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

Definition at line 1002 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
pointer slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::operator-> ( ) const
inline

Definition at line 754 of file component_iterator2d_range.hpp.

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

Assign a const_component_iterator2d_range.

Assign elements of const_component_iterator2d_range in o.

Parameters
oconst_component_iterator2d_range to get the values from.
Returns
a const_component_iterator2d_range reference.

Definition at line 724 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
reference slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::operator[] ( difference_type  d) const
inline

const_component_iterator2d_range element assignment operator. Equivalent to *(i + d).

Parameters
ddifference_type.
Returns
a const reference to the 2d container elements
Precondition
(i + d) exists and is dereferenceable.

Definition at line 1070 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
MultiComponentContainer2D::const_row_range_iterator slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::row_begin ( size_type  row) const
inline

const_component_iterator2d_range element assignment operator.

Parameters
rowoffset.
Returns
a const_row_range_iterator to the first element of range at the row row of range
Todo:
add assert

Definition at line 1087 of file component_iterator2d_range.hpp.

template<class MultiComponentContainer2D , std::size_t N>
MultiComponentContainer2D::const_row_range_iterator slip::const_component_iterator2d_range< MultiComponentContainer2D, N >::row_end ( size_type  row) const
inline

const_component_iterator2d_range element assignment operator.

Parameters
rowoffset.
Returns
a const_row_range_iterator to the past-the-end element of range at the row row of range
Todo:
add assert

Definition at line 1101 of file component_iterator2d_range.hpp.

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

Access to the first index of the current const_component_iterator2d_range.

Returns
the first index.

Definition at line 1149 of file component_iterator2d_range.hpp.

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

Access to the second index of the current const_component_iterator2d_range.

Returns
the second index.

Definition at line 1167 of file component_iterator2d_range.hpp.

Friends And Related Function Documentation

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

Inequality operator.

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

Definition at line 895 of file component_iterator2d_range.hpp.

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

const_component_iterator2d_range difference operator.

Parameters
i1first const_component_iterator2d_range.
i2second const_component_iterator2d_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 1049 of file component_iterator2d_range.hpp.

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

< operator.

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

Definition at line 914 of file component_iterator2d_range.hpp.

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

<= operator.

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

Definition at line 942 of file component_iterator2d_range.hpp.

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

Equality operator.

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

Definition at line 880 of file component_iterator2d_range.hpp.

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

operator.

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

Definition at line 928 of file component_iterator2d_range.hpp.

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

>= operator.

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

Definition at line 956 of file component_iterator2d_range.hpp.


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