26 #include <type_traits>
27 #include "../error/exceptions.hpp"
50 template<
typename ITERABLE>
76 typedef typename std::conditional<std::is_const<ITERABLE>::value,
77 const value_type*,value_type *>::type
pointer;
79 typedef typename std::conditional<std::is_const<ITERABLE>::value,
96 _container(container),
107 _container(i._container),
125 explicit operator bool()
const {
return true; }
164 iterator_type temp(*
this);
181 iterator_type tmp = *
this;
206 if(
this == &a)
return true;
214 if(
this==&a)
return false;
222 return this->_state < b.
_state;
229 return this->_state <= b.
_state;
236 return this->_state > b.
_state;
243 return this->_state >= b.
_state;
265 template<
typename ITERABLE>
271 scalar_iterator<ITERABLE>
291 template<
typename ITERABLE>
292 scalar_iterator<ITERABLE>
310 template<
typename ITERABLE>
311 scalar_iterator<ITERABLE>
330 template<
typename ITERABLE>
std::random_access_iterator_tag iterator_category
type of iterator
Definition: scalar_iterator.hpp:84
std::remove_const< ITERABLE >::type container_type
extract the container type from the template argument (by
Definition: scalar_iterator.hpp:68
scalar_iterator< ITERABLE > iterator_type
type of the iterator
Definition: scalar_iterator.hpp:72
iterator_type operator--(int)
decrement operators
Definition: scalar_iterator.hpp:179
iterator_type & operator+=(ssize_t i)
compound assignment with +=
Definition: scalar_iterator.hpp:188
scalar_iterator< ITERABLE > operator+(ssize_t a, const scalar_iterator< ITERABLE > &b)
add offset to iterator
Definition: scalar_iterator.hpp:293
ssize_t operator-(const scalar_iterator< ITERABLE > &a, const scalar_iterator< ITERABLE > &b)
subtract two iterators
Definition: scalar_iterator.hpp:331
std::conditional< std::is_const< ITERABLE >::value, const value_type &, value_type & >::type reference
reference type the iterator provides
Definition: scalar_iterator.hpp:80
bool operator<=(const iterator_type &b)
lesser than equal operator
Definition: scalar_iterator.hpp:227
bool operator==(const iterator_type &a)
comparsion operator - equality
Definition: scalar_iterator.hpp:203
Definition: add_op.hpp:29
ssize_t difference_type
difference type of the iterator
Definition: scalar_iterator.hpp:82
container_type::value_type value_type
value type of the container
Definition: scalar_iterator.hpp:74
bool operator>=(const iterator_type &b)
greater equal than operator
Definition: scalar_iterator.hpp:241
ITERABLE * _container
pointer to the container object
Definition: scalar_iterator.hpp:61
ssize_t _state
the internal state of the iterator
Definition: scalar_iterator.hpp:64
bool operator<(const iterator_type &b)
lesser than operator
Definition: scalar_iterator.hpp:220
scalar_iterator(const iterator_type &i)
copy constructor
Definition: scalar_iterator.hpp:106
ssize_t state() const
get state of the iterator
Definition: scalar_iterator.hpp:247
pointer operator->()
pointer access operator
Definition: scalar_iterator.hpp:150
bool operator>(const iterator_type &b)
greater than operator
Definition: scalar_iterator.hpp:234
iterator_type & operator-=(ssize_t i)
compound assignment with -=
Definition: scalar_iterator.hpp:196
scalar iterator
Definition: scalar_iterator.hpp:57
iterator_type & operator--()
decrement operators
Definition: scalar_iterator.hpp:171
bool operator!=(const iterator_type &a)
comparison operator - inequality
Definition: scalar_iterator.hpp:212
std::conditional< std::is_const< ITERABLE >::value, const value_type *, value_type * >::type pointer
pointer type the iterator provides
Definition: scalar_iterator.hpp:77
reference operator*()
dereferencing operator
Definition: scalar_iterator.hpp:138
iterator_type operator++(int)
increment iterator position
Definition: scalar_iterator.hpp:162
scalar_iterator(ITERABLE *container, size_t state=0)
standard constructor
Definition: scalar_iterator.hpp:95
iterator_type & operator++()
increment iterator position
Definition: scalar_iterator.hpp:154