52 #ifndef Foam_StrideIterator_H 53 #define Foam_StrideIterator_H 56 #include <type_traits> 67 template<
class IntType>
70 static_assert(std::is_integral_v<IntType>,
"Integral required");
106 value_(start), stride_(
stride)
121 return value_ + (
n * stride_);
158 template<
class IntType>
169 typedef const IntType*
pointer;
203 return this->
value();
277 ? ((this->
value() - iter.value()) / this->
stride())
289 return (this->
value() == iter.value());
296 return (this->
value() < iter.value());
305 return !(*
this == iter);
311 return !(iter < *
this);
317 return (iter < *
this);
323 return !(*
this < iter);
332 template<
class IntType>
333 class RevStrideIterator
335 private StrideIndexer<IntType>
343 typedef const IntType*
pointer;
368 return this->
value();
442 ? ((iter.value() - this->
value()) / this->
stride())
454 return (this->
value() == iter.value());
461 return (iter.value() < this->
value());
470 return !(*
this == iter);
476 return !(iter < *
this);
482 return (iter < *
this);
488 return !(*
this < iter);
constexpr value_type operator*() const noexcept
Return the value.
void prev() noexcept
Decrement the value by the stride.
StrideIterator & operator+=(value_type n) noexcept
Arbitrary increment.
StrideIterator & operator++() noexcept
Prefix increment.
constexpr RevStrideIterator operator-(value_type n) const noexcept
Return iterator with offset.
constexpr bool operator>=(const StrideIterator &iter) const noexcept
void next() noexcept
Increment the value by the stride.
constexpr bool operator<=(const RevStrideIterator &iter) const noexcept
constexpr bool operator>(const RevStrideIterator &iter) const noexcept
constexpr RevStrideIterator() noexcept
Default construct as zero, stride 1.
value_type operator()() noexcept
Apply a postfix increment and return the current value.
constexpr RevStrideIterator operator+(value_type n) const noexcept
Return iterator with offset.
constexpr value_type operator*() const noexcept
Return the value.
constexpr bool operator!=(const RevStrideIterator &iter) const noexcept
constexpr value_type stride() const noexcept
The stride.
StrideIterator & operator-=(value_type n) noexcept
Arbitrary decrement.
constexpr bool operator<=(const StrideIterator &iter) const noexcept
RevStrideIterator & operator-=(value_type n) noexcept
Arbitrary decrement.
constexpr value_type value() const noexcept
The current value.
constexpr value_type operator[](value_type n) const noexcept
Offset dereference operator.
constexpr bool operator>=(const RevStrideIterator &iter) const noexcept
A random-access, integer-like, input iterator for integral values with a stride that behaves like a r...
constexpr bool operator==(const RevStrideIterator &iter) const noexcept
Test for equality of values (ignore stride)
constexpr StrideIndexer() noexcept
Default construct as zero, stride=1.
constexpr bool operator!=(const StrideIterator &iter) const noexcept
constexpr bool operator==(const StrideIterator &iter) const noexcept
Test for equality of values (ignores stride)
constexpr bool operator<(const RevStrideIterator &iter) const noexcept
Compare less-than values (ignore stride)
A random-access, integer-like, input iterator for integral values with a stride. If the stride is 1...
constexpr StrideIterator operator-(value_type n) const noexcept
Return iterator with offset.
RevStrideIterator & operator--() noexcept
Prefix decrement.
std::random_access_iterator_tag iterator_category
RevStrideIterator & operator+=(value_type n) noexcept
Arbitrary increment.
Indexer or generator for strided integral values. The extended base functionality (eg...
std::random_access_iterator_tag iterator_category
constexpr bool operator>(const StrideIterator &iter) const noexcept
RevStrideIterator & operator++() noexcept
Prefix increment.
constexpr value_type operator[](value_type n) const noexcept
Offset dereference operator.
constexpr value_type operator*() const noexcept
Return the value.
constexpr StrideIterator() noexcept
Default construct as zero, stride 1.
constexpr bool operator<(const StrideIterator &iter) const noexcept
Compare less-than values (ignores stride)
constexpr StrideIterator operator+(value_type n) const noexcept
Return iterator with offset.
StrideIterator & operator--() noexcept
Prefix decrement.