21#ifndef mia_2d_iterator_hh
22#define mia_2d_iterator_hh
101 template <
typename AI>
111 template <
typename AI>
120 template <
typename AI>
141 template <
typename T>
friend
145 template <
typename T>
friend
175template <
typename AI>
179 m_size = other.m_size;
180 m_begin = other.m_begin;
182 m_iterator = other.m_iterator;
183 m_xstride = other.m_xstride;
184 m_boundary = other.m_boundary;
189template <
typename AI>
192 m_size(other.m_size),
193 m_begin(other.m_begin),
195 m_xstride(other.m_xstride),
196 m_iterator(other.m_iterator),
197 m_boundary(other.m_boundary)
204 return left.m_pos == right.m_pos;
210 return left.m_pos != right.m_pos;
255 template <
typename AI>
265 template <
typename AI>
274 template <
typename AI>
295 template <
typename T>
friend
310 const reference operator[] (
int i)
const;
328template <
typename AI>
332 m_size = other.m_size;
333 m_begin = other.m_begin;
335 m_iterator = other.m_iterator;
336 m_xstride = other.m_xstride;
341template <
typename AI>
344 m_size(other.m_size),
345 m_begin(other.m_begin),
347 m_xstride(other.m_xstride),
348 m_iterator(other.m_iterator)
366 return left.m_pos == right.m_pos;
382 return m_iterator[i];
396 typedef typename I::difference_type difference_type;
397 typedef typename I::value_type value_type;
398 typedef typename I::pointer pointer;
399 typedef typename I::reference reference;
400 typedef forward_iterator_tag iterator_category;
407 typedef typename I::difference_type difference_type;
408 typedef typename I::value_type value_type;
409 typedef typename I::pointer pointer;
410 typedef typename I::reference reference;
411 typedef forward_iterator_tag iterator_category;
bool operator!=(const C2DImage &a, const C2DImage &b)
bool operator==(const range2d_iterator_with_boundary_flag< T > &left, const range2d_iterator_with_boundary_flag< T > &right)
bool operator!=(const range2d_iterator_with_boundary_flag< T > &left, const range2d_iterator_with_boundary_flag< T > &right)
bool operator==(const CAttribute &a, const CAttribute &b)
a 2D iterator that knows its position in the 2D grid ans supports iterating over sub-ranges
range2d_iterator_with_boundary_flag(const C2DBounds &pos)
range2d_iterator_with_boundary_flag< I > & operator=(const range2d_iterator_with_boundary_flag< I > &other)
assignment operator
int get_boundary_flags() const
I internal_iterator
data type for the real iterator in the background
I::reference reference
data type reference
range2d_iterator_with_boundary_flag()
internal_iterator get_point()
const C2DBounds & pos() const
range2d_iterator_with_boundary_flag(const C2DBounds &pos, const C2DBounds &size, const C2DBounds &start, const C2DBounds &end, I iterator)
range2d_iterator_with_boundary_flag(const range2d_iterator_with_boundary_flag< I > &other)
copy constructore
I::pointer pointer
data type pointer
friend class range2d_iterator_with_boundary_flag
friend iterator type because we may want to copy a iterator to a const_iterator.
internal_iterator get_point()
I::reference reference
data type reference
friend class range2d_iterator
friend iterator type because we may want to copy a iterator to a const_iterator.
const reference operator[](int i) const
range2d_iterator(const C2DBounds &pos, const C2DBounds &size, const C2DBounds &start, const C2DBounds &end, I iterator)
range2d_iterator(const range2d_iterator< I > &other)
copy constructore
range2d_iterator(const C2DBounds &pos)
I internal_iterator
data type for the real iterator in the background
range2d_iterator_with_boundary_flag< I > with_boundary_flag() const
range2d_iterator< I > & operator=(const range2d_iterator< I > &other)
assignment operator
const C2DBounds & pos() const
I::pointer pointer
data type pointer
#define NS_MIA_BEGIN
conveniance define to start the mia namespace
#define NS_MIA_END
conveniance define to end the mia namespace
F operator*(const typename TSparseSolver< F >::A_mult_x &A, const F &x)