cartobase 6.0.6
carto::const_line_NDIterator< T > Class Template Reference

const variant of the line_NDIterator More...

#include <cartobase/containers/nditerator.h>

Inheritance diagram for carto::const_line_NDIterator< T >:
Collaboration diagram for carto::const_line_NDIterator< T >:

Public Member Functions

 const_line_NDIterator (const T *buffer, const std::vector< int > &dims)
 
 const_line_NDIterator (const T *buffer, const std::vector< int > &dims, const std::vector< int > &strides, bool optimize_direction=false)
 the optional "optimize_direction" parameter allows the iterator to find a contiguous direction (with a stride == 1) and use it as the line dimension.
 
 const_line_NDIterator (const T *buffer, const std::vector< int > &dims, const std::vector< std::size_t > &strides, bool optimize_direction=false)
 
 const_line_NDIterator (const T *buffer, const std::vector< int > &dims, const std::vector< std::ptrdiff_t > &strides, bool optimize_direction=false)
 
const T & operator* () const
 
const T * operator-> () const
 
void inc_line_ptr (const T *&p) const
 increment a "line" pointer (advancing through the line)
 
std::ptrdiff_t line_length () const
 line_size * line stride: end of line
 
- Public Member Functions inherited from carto::line_NDIterator_base
 line_NDIterator_base (const std::vector< int > &dims)
 
 line_NDIterator_base (const std::vector< int > &dims, const std::vector< int > &strides, bool optimize_direction=false)
 
 line_NDIterator_base (const std::vector< int > &dims, const std::vector< std::size_t > &strides, bool optimize_direction=false)
 
 line_NDIterator_base (const std::vector< int > &dims, const std::vector< std::ptrdiff_t > &strides, bool optimize_direction=false)
 
NDIterator_baseoperator++ ()
 
int line_size () const
 
int line_direction () const
 
bool is_contiguous () const
 
- Public Member Functions inherited from carto::NDIterator_base
 NDIterator_base (const std::vector< int > &dims)
 
 NDIterator_base (const std::vector< int > &dims, const std::vector< int > &strides)
 
 NDIterator_base (const std::vector< int > &dims, const std::vector< std::size_t > &strides)
 
 NDIterator_base (const std::vector< int > &dims, const std::vector< std::ptrdiff_t > &strides)
 
const std::vector< int > & position () const
 
std::ptrdiff_t offset () const
 
NDIterator_baseoperator++ ()
 
bool ended () const
 
void reset ()
 

Protected Attributes

const T * _buffer
 
- Protected Attributes inherited from carto::line_NDIterator_base
int _line_directon
 
std::ptrdiff_t _line_stride
 
bool _contiguous
 
- Protected Attributes inherited from carto::NDIterator_base
std::vector< int > _dims
 
std::vector< std::ptrdiff_t > _strides
 
std::vector< int > _position
 
std::ptrdiff_t _offset
 
bool _ended
 

Additional Inherited Members

- Protected Member Functions inherited from carto::line_NDIterator_base
void set_optimized_direction (bool optimize_direction=false)
 
- Static Protected Member Functions inherited from carto::NDIterator_base
template<typename T>
static std::vector< std::ptrdiff_t > to_ptrdiff_v (const std::vector< T > &v)
 

Detailed Description

template<typename T>
class carto::const_line_NDIterator< T >

const variant of the line_NDIterator

Definition at line 236 of file nditerator.h.

Constructor & Destructor Documentation

◆ const_line_NDIterator() [1/4]

template<typename T>
carto::const_line_NDIterator< T >::const_line_NDIterator ( const T * buffer,
const std::vector< int > & dims )
inline

Definition at line 667 of file nditerator.h.

References _buffer, and carto::line_NDIterator_base::line_NDIterator_base().

◆ const_line_NDIterator() [2/4]

template<typename T>
carto::const_line_NDIterator< T >::const_line_NDIterator ( const T * buffer,
const std::vector< int > & dims,
const std::vector< int > & strides,
bool optimize_direction = false )
inline

the optional "optimize_direction" parameter allows the iterator to find a contiguous direction (with a stride == 1) and use it as the line dimension.

This way a line pointer can be incremented instead of adding strides. In many cases it does not change much in performance.

Definition at line 675 of file nditerator.h.

References _buffer, and carto::line_NDIterator_base::line_NDIterator_base().

◆ const_line_NDIterator() [3/4]

template<typename T>
carto::const_line_NDIterator< T >::const_line_NDIterator ( const T * buffer,
const std::vector< int > & dims,
const std::vector< std::size_t > & strides,
bool optimize_direction = false )
inline

Definition at line 685 of file nditerator.h.

References _buffer, and carto::line_NDIterator_base::line_NDIterator_base().

◆ const_line_NDIterator() [4/4]

template<typename T>
carto::const_line_NDIterator< T >::const_line_NDIterator ( const T * buffer,
const std::vector< int > & dims,
const std::vector< std::ptrdiff_t > & strides,
bool optimize_direction = false )
inline

Definition at line 695 of file nditerator.h.

References _buffer, and carto::line_NDIterator_base::line_NDIterator_base().

Member Function Documentation

◆ inc_line_ptr()

template<typename T>
void carto::const_line_NDIterator< T >::inc_line_ptr ( const T *& p) const
inline

increment a "line" pointer (advancing through the line)

Definition at line 719 of file nditerator.h.

References carto::line_NDIterator_base::_contiguous, and carto::line_NDIterator_base::_line_stride.

◆ line_length()

template<typename T>
std::ptrdiff_t carto::const_line_NDIterator< T >::line_length ( ) const
inline

◆ operator*()

template<typename T>
const T & carto::const_line_NDIterator< T >::operator* ( ) const
inline

Definition at line 705 of file nditerator.h.

References _buffer, and carto::NDIterator_base::_offset.

◆ operator->()

template<typename T>
const T * carto::const_line_NDIterator< T >::operator-> ( ) const
inline

Definition at line 712 of file nditerator.h.

References _buffer, and carto::NDIterator_base::_offset.

Member Data Documentation

◆ _buffer

template<typename T>
const T* carto::const_line_NDIterator< T >::_buffer
protected

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