21 #ifndef mia_3d_iterator_hh
22 #define mia_3d_iterator_hh
108 template <
typename AI>
119 template <
typename AI>
127 template <
typename AI>
148 template <
typename T>
friend
189 template <
typename I>
233 template <
typename AI>
237 template <
typename AI>
248 template <
typename AI>
257 template <
typename AI>
278 template <
typename T>
friend
295 const reference operator[] (
int i)
const;
313 template <
typename I>
314 template <
typename AI>
318 m_size = other.m_size;
319 m_begin = other.m_begin;
321 m_iterator = other.m_iterator;
322 m_xstride = other.m_xstride;
323 m_ystride = other.m_ystride;
327 template <
typename I>
328 template <
typename AI>
331 m_size(other.m_size),
332 m_begin(other.m_begin),
334 m_xstride(other.m_xstride),
335 m_ystride(other.m_ystride),
336 m_iterator(other.m_iterator)
340 template <
typename I>
344 return m_iterator[i];
351 template <
typename I>
358 return left.m_pos == right.m_pos;
364 template <
typename I>
374 template <
typename I>
375 template <
typename AI>
379 m_size = other.m_size;
380 m_begin = other.m_begin;
382 m_iterator = other.m_iterator;
383 m_xstride = other.m_xstride;
384 m_ystride = other.m_ystride;
385 m_boundary = other.m_boundary;
389 template <
typename I>
390 template <
typename AI>
393 m_size(other.m_size),
394 m_begin(other.m_begin),
396 m_xstride(other.m_xstride),
397 m_ystride(other.m_ystride),
398 m_iterator(other.m_iterator),
399 m_boundary(other.m_boundary)
407 template <
typename I>
414 return left.m_pos == right.m_pos;
420 template <
typename I>
431 template <
typename I>
442 template <
typename I>
bool operator==(const range3d_iterator< I > &left, const range3d_iterator< I > &right)
bool operator!=(const range3d_iterator< I > &a, const range3d_iterator< I > &b)
a 3D iterator that knows its position in the 3D grid, has a flag indicating whether it is on a bounda...
int get_boundary_flags() const
range3d_iterator_with_boundary_flag< I > & operator++()
prefix increment
pointer operator->() const
range3d_iterator_with_boundary_flag()
I::value_type value_type
data value type
I::pointer pointer
data type pointer
range3d_iterator_with_boundary_flag(const C3DBounds &pos, const C3DBounds &size, const C3DBounds &start, const C3DBounds &end, I iterator)
friend class range3d_iterator_with_boundary_flag
friend iterator type because we may want to copy a iterator to a const_iterator.
range3d_iterator_with_boundary_flag< I > & operator=(const range3d_iterator_with_boundary_flag< I > &other)
assignment operator
const C3DBounds & pos() const
I internal_iterator
data type for the real iterator in the background
range3d_iterator_with_boundary_flag(const range3d_iterator_with_boundary_flag< I > &other)
copy constructore
internal_iterator get_point()
I::reference reference
data type reference
range3d_iterator_with_boundary_flag(const C3DBounds &pos)
a 3D iterator that knows its position in the 3D grid ans supports iterating over sub-ranges
range3d_iterator< I > & operator=(const range3d_iterator< I > &other)
assignment operator
internal_iterator get_point()
const reference operator[](int i) const
range3d_iterator_with_boundary_flag< I > with_boundary_flag() const
I::value_type value_type
data value type
range3d_iterator(const C3DBounds &pos, const C3DBounds &size, const C3DBounds &start, const C3DBounds &end, I iterator)
range3d_iterator(const C3DBounds &pos)
I::pointer pointer
data type pointer
const C3DBounds & pos() const
I internal_iterator
data type for the real iterator in the background
range3d_iterator(const range3d_iterator< I > &other)
copy constructore
friend class range3d_iterator
friend iterator type because we may want to copy a iterator to a const_iterator.
I::reference reference
data type reference
I::difference_type difference_type
forward_iterator_tag iterator_category
I::difference_type difference_type
forward_iterator_tag iterator_category
#define NS_MIA_BEGIN
conveniance define to start the mia namespace
#define NS_MIA_END
conveniance define to end the mia namespace
Matrix EXPORT_GSL operator*(const Matrix &lhs, const Matrix &rhs)