34 #ifndef CARTOBASE_CONTAINER_NDITERATOR_H 35 #define CARTOBASE_CONTAINER_NDITERATOR_H 54 const std::vector<int> & strides );
56 const std::vector<size_t> & strides );
58 const std::vector<long> & strides );
60 const std::vector<int> &
position()
const;
70 static std::vector<size_t>
to_int_v(
const std::vector<T> & v );
85 const std::vector<int> & strides );
87 const std::vector<size_t> & strides );
89 const std::vector<long> & strides );
121 NDIterator( T* buffer,
const std::vector<int> & dims );
122 NDIterator( T* buffer,
const std::vector<int> & dims,
123 const std::vector<int> & strides );
124 NDIterator( T*buffer,
const std::vector<int> & dims,
125 const std::vector<size_t> & strides );
126 NDIterator( T* buffer,
const std::vector<int> & dims,
127 const std::vector<long> & strides );
143 const std::vector<int> & strides );
145 const std::vector<size_t> & strides );
147 const std::vector<long> & strides );
188 const std::vector<int> & strides );
190 const std::vector<size_t> & strides );
192 const std::vector<long> & strides );
209 const std::vector<int> & strides );
211 const std::vector<size_t> & strides );
213 const std::vector<long> & strides );
234 const std::vector<int> & strides )
245 const std::vector<size_t> & strides )
255 const std::vector<long> & strides )
290 template <
typename T>
inline 293 std::vector<size_t> ov( v.size() );
294 std::vector<size_t>::iterator io = ov.begin();
295 typename std::vector<T>::const_iterator i, e = v.end();
296 for( i=v.begin(); i!=e; ++i, ++io )
304 size_t dim, ndim =
_dims.size();
305 bool nextrow =
true, stride = !
_strides.empty();
306 for( dim=0; nextrow && dim<ndim; ++dim )
315 if( dim == ndim - 1 )
331 const std::vector<int> & dims )
334 if( dims.size() < 2 )
340 const std::vector<int> & dims,
const std::vector<int> & strides )
343 if( dims.size() < 2 )
349 const std::vector<int> & dims,
const std::vector<size_t> & strides )
352 if( dims.size() < 2 )
358 const std::vector<int> & dims,
const std::vector<long> & strides )
361 if( dims.size() < 2 )
368 size_t dim, ndim =
_dims.size();
369 bool nextrow =
true, stride = !
_strides.empty();
370 for( dim=1; nextrow && dim<ndim; ++dim )
379 if( dim == ndim - 1 )
394 template <
typename T>
inline 401 template <
typename T>
inline 403 const std::vector<int> & strides )
409 template <
typename T>
inline 411 const std::vector<size_t> & strides )
417 template <
typename T>
inline 419 const std::vector<long> & strides )
432 template <
typename T>
inline 434 const T* buffer,
const std::vector<int> & dims )
440 template <
typename T>
inline 442 const T* buffer,
const std::vector<int> & dims,
443 const std::vector<int> & strides )
449 template <
typename T>
const inline T &
457 template <
typename T>
inline 459 T* buffer,
const std::vector<int> & dims )
465 template <
typename T>
inline 467 const std::vector<int> & strides )
473 template <
typename T>
inline 475 const std::vector<size_t> & strides )
481 template <
typename T>
inline 483 const std::vector<long> & strides )
496 template <
typename T>
inline 498 const T* buffer,
const std::vector<int> & dims )
504 template <
typename T>
inline 506 const T* buffer,
const std::vector<int> & dims,
507 const std::vector<int> & strides )
513 template <
typename T>
inline 515 const T* buffer,
const std::vector<int> & dims,
516 const std::vector<size_t> & strides )
522 template <
typename T>
inline 524 const T* buffer,
const std::vector<int> & dims,
525 const std::vector<long> & strides )
531 template <
typename T>
inline const T &
line_NDIterator(T *buffer, const std::vector< int > &dims)
N-dimensional array line iterator.
const T & operator*() const
const T & operator*() const
NDIterator(T *buffer, const std::vector< int > &dims)
const_line_NDIterator(const T *buffer, const std::vector< int > &dims)
line_NDIterator_base(const std::vector< int > &dims)
const_NDIterator(const T *buffer, const std::vector< int > &dims)
static std::vector< size_t > to_int_v(const std::vector< T > &v)
VoxelRGB operator*(const VoxelRGB &aa, const uint8_t &bb)
const variant of the line_NDIterator
NDIterator_base & operator++()
NDIterator_base & operator++()
const variant of the NDIterator
const std::vector< int > & position() const
N-dimensional array iterator.
std::vector< int > _position
Base class for N-dimensional array iterators.
std::vector< size_t > _strides
NDIterator_base(const std::vector< int > &dims)