37template <
class Iterator>
62 typedef typename std::iterator_traits<Iterator>::value_type
value_type;
118 return std::move(
const_cast<value_type&
>(*current));
184 return this->current == other.current;
199template<
class Iterator>
212template <
class Iterator,
class KeyType,
class ValueType >
214 static_assert ( ! std::is_const_v < std::remove_reference_t < KeyType > >,
"KeyType of move iterator must not be const" );
239 typedef typename std::pair < KeyType, ValueType >
value_type;
295 return std::move(
reinterpret_cast < value_type &
>(*current));
361 return this->current == other.current;
378template <
class T,
class R,
class Iterator>
408 return std::move ( m_Container ).begin ( );
416 return std::move ( m_Container ).end ( );
445 return std::move ( m_Container ).begin ( );
453 return std::move ( m_Container ).end ( );
518 return m_Container.rbegin ( );
528 return m_Container.rend ( );
555template <
class Iterator >
568 using pointer =
typename std::iterator_traits < Iterator >::value_type;
574 using value_type =
typename std::conditional < std::is_const < typename std::remove_reference < typename std::iterator_traits < Iterator >::reference >::type >::value,
typename std::add_const < typename std::remove_pointer < pointer >::type >::type,
typename std::remove_pointer < pointer >::type >::type;
610 template <
class Iter >
753 return * ( m_base [ index ] );
765 return m_base - other.m_base;
777 return this->m_base == other.m_base;
789 return this->m_base < other.m_base;
814template <
class Iterator >
829template <
typename InputIterator,
typename Distance >
830inline constexpr void retractInternal ( InputIterator &
i, Distance n, std::input_iterator_tag ) {
846template <
typename B
idirectionalIterator,
typename Distance >
847inline constexpr void retractInternal ( BidirectionalIterator &
i, Distance n, std::bidirectional_iterator_tag ) {
866template <
typename RandomAccessIterator,
typename Distance >
867inline constexpr void retractInternal ( RandomAccessIterator &
i, Distance n, std::random_access_iterator_tag ) {
886template <
typename Iterator,
typename Distance >
887inline constexpr void retract ( Iterator &
i, Distance n ) {
888 typename std::iterator_traits < Iterator >::difference_type d = n;
889 retractInternal (
i, d,
typename std::iterator_traits < Iterator >::iterator_category ( ) );
899template <
class Container >
900auto begin ( Container && cont ) ->
decltype ( std::forward ( cont ).begin ( ) ) {
901 return std::forward ( cont ).begin ( );
911template <
class Container >
912auto end ( Container && cont ) ->
decltype ( std::forward ( cont ).end ( ) ) {
913 return std::forward ( cont ).end ( );
953 m_callback ( std::forward < R > ( value ) );
1002template <
typename map_type >
1005 explicit key_iterator (
const typename map_type::const_iterator & other ) : map_type::const_iterator ( other ) {
1008 const typename map_type::value_type::first_type &
operator * ( )
const {
1009 return map_type::const_iterator::operator * ( ).first;
1012 const typename map_type::value_type::first_type *
operator -> ( )
const {
1013 return & ( map_type::const_iterator::operator * ( ).first );
1026template <
typename map_type >
1040template <
typename map_type >
1050template <
typename map_type >
1053 explicit value_iterator (
const typename map_type::const_iterator & other ) : map_type::const_iterator ( other ) {
1056 const typename map_type::value_type::first_type &
operator * ( )
const {
1057 return map_type::const_iterator::operator * ( ).second;
1060 const typename map_type::value_type::first_type *
operator -> ( )
const {
1061 return & ( map_type::const_iterator::operator * ( ).second );
1074template <
typename map_type >
1088template <
typename map_type >
Output iterator calling a callback function on assignment.
Definition: iterator.hpp:923
void value_type
Definition: iterator.hpp:931
callback_iterator & operator*()
Definition: iterator.hpp:962
void reference
Definition: iterator.hpp:933
void pointer
Definition: iterator.hpp:932
void difference_type
Definition: iterator.hpp:930
callback_iterator(T callback)
Definition: iterator.hpp:941
callback_iterator & operator=(R &&value)
Definition: iterator.hpp:952
std::output_iterator_tag iterator_category
Definition: iterator.hpp:934
callback_iterator & operator++()
Definition: iterator.hpp:971
Adaptor iterator to additionally call second dereference on the iterator dereference result.
Definition: iterator.hpp:556
typename std::iterator_traits< Iterator >::value_type pointer
The pointer type is the value of adapted iterator.
Definition: iterator.hpp:568
reference operator[](int index) const
Array subscript operator.
Definition: iterator.hpp:752
bool operator==(const dereferencing_iterator< Iterator > &other) const
Comparison of iterators for equality.
Definition: iterator.hpp:776
typename std::iterator_traits< Iterator >::iterator_category iterator_category
iterator_category is inherited.
Definition: iterator.hpp:592
dereferencing_iterator< Iterator > & operator-=(int distance)
Shifs the iterator back by distance.
Definition: iterator.hpp:723
dereferencing_iterator< Iterator > operator-(int distance) const
Creates a new iterator and shifs it back by distance.
Definition: iterator.hpp:736
dereferencing_iterator< Iterator > & operator++()
Increment operator.
Definition: iterator.hpp:642
reference operator*() const
Dereference operator doing extra dereference.
Definition: iterator.hpp:620
typename std::conditional< std::is_const< typename std::remove_reference< typename std::iterator_traits< Iterator >::reference >::type >::value, typename std::add_const< typename std::remove_pointer< pointer >::type >::type, typename std::remove_pointer< pointer >::type >::type value_type
The value type is the value of adapted iterator without pointer.
Definition: iterator.hpp:574
dereferencing_iterator(Iterator base)
Constructor of the dereferencing iterator adaptor.
Definition: iterator.hpp:600
auto operator<=>(const dereferencing_iterator< Iterator > &other) const
Less than comparison of iterators.
Definition: iterator.hpp:788
pointer operator->() const
Arrow operator doing extra dereference.
Definition: iterator.hpp:630
dereferencing_iterator< Iterator > & operator--()
Decrement operator.
Definition: iterator.hpp:669
Iterator base() const
The underlying iterator getter.
Definition: iterator.hpp:798
std::ptrdiff_t difference_type
Difference_type is standard pointer difference type.
Definition: iterator.hpp:580
dereferencing_iterator(const dereferencing_iterator< Iter > &iter)
Definition: iterator.hpp:611
dereferencing_iterator< Iterator > & operator+=(int distance)
Shifs the iterator by distance.
Definition: iterator.hpp:696
value_type & reference
Reference type is reference to the value type.
Definition: iterator.hpp:586
dereferencing_iterator< Iterator > operator+(int distance) const
Creates a new iterator and shifs it by distance.
Definition: iterator.hpp:709
Definition: iterator.hpp:1003
const map_type::value_type::first_type & operator*() const
Definition: iterator.hpp:1008
key_iterator(const typename map_type::const_iterator &other)
Definition: iterator.hpp:1005
const map_type::value_type::first_type * operator->() const
Definition: iterator.hpp:1012
Adaptor iterator to allow values to be moved from a map. Internaly calls reinterpret cast to derefere...
Definition: iterator.hpp:213
map_move_iterator operator++(int)
Increment operator.
Definition: iterator.hpp:332
std::ptrdiff_t difference_type
Difference_type is standard pointer difference type.
Definition: iterator.hpp:257
reference operator*() const
Dereference operator using the reinterpret cast.
Definition: iterator.hpp:294
value_type * pointer
The pointer type is a pointer to the value_type.
Definition: iterator.hpp:251
typename std::iterator_traits< Iterator >::iterator_category iterator_category
iterator_category is inherited.
Definition: iterator.hpp:233
map_move_iterator & operator++()
Increment operator.
Definition: iterator.hpp:306
map_move_iterator operator--(int)
Decrement operator.
Definition: iterator.hpp:346
pointer operator->() const
Arrow operator using the reinterpret cast.
Definition: iterator.hpp:284
bool operator==(const map_move_iterator< Iterator, KeyType, ValueType > &other) const
Comparison of iterators for equality.
Definition: iterator.hpp:360
iterator_type base() const
Getter of the underlying set iterator.
Definition: iterator.hpp:274
value_type && reference
Reference type is rvalue reference to the value type.
Definition: iterator.hpp:245
map_move_iterator(Iterator it)
Constructor of the set move iterator adaptor.
Definition: iterator.hpp:265
Iterator iterator_type
The underlying iterator type.
Definition: iterator.hpp:227
std::pair< KeyType, ValueType > value_type
The value type is essentially the value_type of adapted iterator but constructed here to avoid consts...
Definition: iterator.hpp:239
map_move_iterator & operator--()
Decrement operator.
Definition: iterator.hpp:319
Adaptor class to change begin and end behavior for rvalue qualified begin and end....
Definition: iterator.hpp:427
auto end()
End method calls rvalue qualified end on adapted value.
Definition: iterator.hpp:452
auto begin()
Begin method calls rvalue qualified begin on adapted value.
Definition: iterator.hpp:444
reference_mover(T &¶m)
Constructor of the mover adaptor class.
Definition: iterator.hpp:438
Adaptor class to change begin and end behavior for reverse begin and reverse end and vise versa.
Definition: iterator.hpp:494
auto begin() const
Begin adaptor method to call rbegin.
Definition: iterator.hpp:517
auto end() const
End adaptor method to call rend.
Definition: iterator.hpp:527
reverser(T &&container)
Constructor of the adaptor class based on the adapted container.
Definition: iterator.hpp:508
Adaptor iterator to allow values to be moved from a set. Internaly calls const cast to dereference re...
Definition: iterator.hpp:38
set_move_iterator operator--(int)
Decrement operator.
Definition: iterator.hpp:169
std::ptrdiff_t difference_type
Difference_type is standard pointer difference type.
Definition: iterator.hpp:80
bool operator==(const set_move_iterator< Iterator > &other) const
Comparison of iterators for equality.
Definition: iterator.hpp:183
iterator_type base() const
Getter of the underlying set iterator.
Definition: iterator.hpp:97
set_move_iterator & operator++()
Increment operator.
Definition: iterator.hpp:129
set_move_iterator operator++(int)
Increment operator.
Definition: iterator.hpp:155
set_move_iterator(Iterator it)
Constructor of the set move iterator adaptor.
Definition: iterator.hpp:88
std::iterator_traits< Iterator >::value_type value_type
The value type is the value_type of adapted iterator.
Definition: iterator.hpp:62
value_type && reference
Reference type is rvalue reference to the value type.
Definition: iterator.hpp:68
pointer operator->() const
Arrow operator using the const cast.
Definition: iterator.hpp:107
set_move_iterator & operator--()
Decrement operator.
Definition: iterator.hpp:142
Iterator iterator_type
The underlying iterator type.
Definition: iterator.hpp:50
typename std::iterator_traits< Iterator >::iterator_category iterator_category
iterator_category is inherited.
Definition: iterator.hpp:56
value_type * pointer
The pointer type is a pointer to the value_type.
Definition: iterator.hpp:74
reference operator*() const
Dereference operator using the const cast.
Definition: iterator.hpp:117
Definition: iterator.hpp:1051
const map_type::value_type::first_type * operator->() const
Definition: iterator.hpp:1060
value_iterator(const typename map_type::const_iterator &other)
Definition: iterator.hpp:1053
const map_type::value_type::first_type & operator*() const
Definition: iterator.hpp:1056
Adaptor class to change begin and end behavior for rvalue qualified begin and end....
Definition: iterator.hpp:390
auto end()
End method calls rvalue qualified end on adapted value.
Definition: iterator.hpp:415
auto begin()
Begin method calls rvalue qualified begin on adapted value.
Definition: iterator.hpp:407
value_mover(T &¶m)
Constructor of the mover adaptor class.
Definition: iterator.hpp:401
int i
Definition: AllEpsilonClosure.h:118
return res
Definition: MinimizeByPartitioning.h:145
Definition: ContainerFromStringLexer.cpp:8
Definition: sigHandler.cpp:20
auto end(Container &&cont) -> decltype(std::forward(cont).end())
Definition: iterator.hpp:912
callback_iterator< T > make_callback_iterator(T callback)
Definition: iterator.hpp:993
constexpr void retract(Iterator &i, Distance n)
A generalization of pointer arithmetic.
Definition: iterator.hpp:887
reverser< T > make_reverse(T &&container)
Reverese adaptor construction function.
Definition: iterator.hpp:544
constexpr void retractInternal(InputIterator &i, Distance n, std::input_iterator_tag)
Implementation of retract function specific to input iterators.
Definition: iterator.hpp:830
int callback(struct dl_phdr_info *info, size_t, void *data)
Definition: simpleStacktrace.cpp:25
reference_mover< T > make_mover(T ¶m)
Move adaptor construction function specialized to lvalue reference parameter.
Definition: iterator.hpp:468
value_iterator< map_type > value_end(const map_type &m)
Definition: iterator.hpp:1089
map_move_iterator< Iterator, T, R > make_map_move_iterator(Iterator it)
Move from map iterator adaptor construction function.
Definition: iterator.hpp:379
value_iterator< map_type > value_begin(const map_type &m)
Definition: iterator.hpp:1075
key_iterator< map_type > key_begin(const map_type &m)
Definition: iterator.hpp:1027
dereferencing_iterator< Iterator > dereferencer(Iterator iter)
Dereferencing adaptor construction function.
Definition: iterator.hpp:815
set_move_iterator< Iterator > make_set_move_iterator(Iterator it)
Move from set iterator adaptor construction function.
Definition: iterator.hpp:200
key_iterator< map_type > key_end(const map_type &m)
Definition: iterator.hpp:1041
auto begin(Container &&cont) -> decltype(std::forward(cont).begin())
Definition: iterator.hpp:900
Definition: FordFulkerson.hpp:16