iterator: add methods to conform iota
to LegacyIterator
This commit is contained in:
parent
84cbbbd049
commit
3791c8b8ee
@ -24,7 +24,19 @@ namespace cruft::iterator {
|
|||||||
template <typename ValueT = std::size_t>
|
template <typename ValueT = std::size_t>
|
||||||
class iota {
|
class iota {
|
||||||
public:
|
public:
|
||||||
|
class iterator;
|
||||||
|
|
||||||
using value_type = ValueT;
|
using value_type = ValueT;
|
||||||
|
using reference = ValueT&;
|
||||||
|
using const_reference = ValueT const&;
|
||||||
|
using const_iterator = iterator;
|
||||||
|
using iterator = iterator;
|
||||||
|
using difference_type = ssize_t;
|
||||||
|
using size_type = size_t;
|
||||||
|
|
||||||
|
iota ()
|
||||||
|
: m_total {}
|
||||||
|
{ ; }
|
||||||
|
|
||||||
iota (value_type _total)
|
iota (value_type _total)
|
||||||
: m_total (_total)
|
: m_total (_total)
|
||||||
@ -68,7 +80,18 @@ namespace cruft::iterator {
|
|||||||
|
|
||||||
iterator begin (void) const { return iterator {}; }
|
iterator begin (void) const { return iterator {}; }
|
||||||
iterator end (void) const { return iterator {m_total}; }
|
iterator end (void) const { return iterator {m_total}; }
|
||||||
|
|
||||||
|
iterator cbegin (void) const { return begin (); }
|
||||||
|
iterator cend (void) const { return cend (); }
|
||||||
|
|
||||||
value_type size (void) const { return m_total; }
|
value_type size (void) const { return m_total; }
|
||||||
|
value_type max_size (void) const { return std::numeric_limits<size_type>::max (); }
|
||||||
|
bool empty (void) const noexcept { return m_total == 0; }
|
||||||
|
|
||||||
|
void swap (iota &other) { std::swap (m_total, other); }
|
||||||
|
|
||||||
|
constexpr bool operator== (iota const &rhs) const noexcept { return m_total == rhs.m_total; }
|
||||||
|
constexpr bool operator!= (iota const &rhs) const noexcept { return m_total == rhs.m_total; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
value_type m_total;
|
value_type m_total;
|
||||||
|
Loading…
Reference in New Issue
Block a user