25 #include "cheetah/data/DataSequence2DPartialIterator.h" 32 template <
typename RawIterator>
34 :
public std::iterator<std::forward_iterator_tag, bool>
37 using BaseType = RawIterator;
41 typedef typename std::iterator_traits<RawIterator>::difference_type difference_type;
58 BaseType
const &iterator)
64 BaseType
const &iterator,
65 std::size_t fast_length,
66 std::size_t slow_stride)
69 , _slow_stride(slow_stride)
70 , _fast_length(fast_length)
78 bool operator==(
SelfType const& o)
const 83 bool operator!=(
SelfType const& o)
const 88 typename BaseType::reference operator*()
93 typename BaseType::reference
const operator*()
const 98 SelfType& operator+=(
typename BaseType::reference
const v)
108 if (++_fast_index < _fast_length)
return *
this;
115 difference_type operator-(
SelfType const o)
117 std::size_t diff = _fast_index + (o._fast_length - o._fast_index);
118 return (_it - o._it)/(o._fast_length + o._slow_stride) + diff - 1;
121 RawIterator& raw_it()
126 RawIterator
const& raw_it()
const 133 std::size_t _fast_index;
134 std::size_t _slow_stride;
135 std::size_t _fast_length;
145 using BaseType::BaseType;
155 using BaseType::BaseType;
164 template<
typename Arch>
165 struct iterator_traits<
ska::cheetah::data::DataSequence2DPartialIterator<Arch, bool>>
173 std::fill(begin.raw_it(), end.raw_it(), x);
177 template<
class Arch>
178 typename std::iterator_traits<ska::cheetah::data::DataSequence2DPartialIterator<Arch,bool>>::difference_type
DataSequence2DPartialIteratorImpl()=default
default constructor. Required by random_access_iterator_tag
Some limits and constants for FLDO.
Iterator over partial ranges of DataSequence2D types, "fast" axis. Generic type.
~DataSequence2DPartialIteratorImpl()
Destroy the iterator.