MySQL 9.6.0
Source Code Documentation
mysql::ranges::Iterator_with_range< Range_tp > Class Template Reference

Iterator that holds a reference to its source range. More...

#include <iterator_with_range.h>

Inheritance diagram for mysql::ranges::Iterator_with_range< Range_tp >:
[legend]

Public Types

using Range_t = Range_tp
 
using Iterator_t = Range_const_iterator_type< Range_t >
 

Public Member Functions

 Iterator_with_range ()=default
 Construct a singular object. More...
 
 Iterator_with_range (const Range_t &range, const Iterator_t &iterator)
 Construct a new object from the given range, and set the iterator to the beginning. More...
 
 Iterator_with_range (const Range_t &range)
 Construct a new object from the given range, and set the iterator to the beginning. More...
 
decltype(auto) get () const
 
decltype(auto) get_pointer () const
 
void next ()
 
void prev ()
 
void advance (std::ptrdiff_t delta)
 
bool is_equal (const Iterator_with_range &other) const
 
std::ptrdiff_t distance_from (const Iterator_with_range &other) const
 
auto & range ()
 
const auto & range () const
 
auto & iterator ()
 
const auto & iterator () const
 
bool is_end () const
 
- Public Member Functions inherited from mysql::iterators::Iterator_interface< Iterator_with_range< Range_tp > >
decltype(auto) operator* () const
 Dereference operator, which returns the current value. More...
 
auto operator-> () const
 Arrow operator, return a pointer (possibly a fancy pointer) to the current element. More...
 
Self_toperator++ ()
 Pre-increment operator, which advances the position one step and returns a reference to the iterator itself. More...
 
auto operator++ (int)
 Post-increment operator, which advances the position one step. More...
 
Self_toperator-- ()
 Pre-decrement iterator, which moves one step back and returns a reference to the iterator itself. More...
 
auto operator-- (int)
 Post-decrement operator, which moves one step back and returns a copy of the iterator before the decrement. More...
 
Self_toperator+= (std::ptrdiff_t delta)
 Addition assignment operator, which moves the iterator forward by the given number of steps, and returns a reference to the iterator itself. More...
 
Self_toperator-= (std::ptrdiff_t delta)
 Subtraction assignment operator, which moves the iterator backward by the given number of steps, and returns a reference to the iterator itself. More...
 
Self_t operator+ (std::ptrdiff_t delta) const
 Addition operator, which returns a new iterator that is the given number of steps ahead of the current iterator. More...
 
Self_t operator- (std::ptrdiff_t delta) const
 Subtraction-of-integer operator, which returns a new iterator that is the given number of steps behind of the current iterator. More...
 
std::ptrdiff_t operator- (const Self_t &other) const
 Subtraction-of-iterator operator, which returns the number of steps from other this. More...
 
decltype(auto) operator[] (std::ptrdiff_t delta) const
 Subscript operator, which returns a new iterator that is the given number of steps ahead of the current iterator. More...
 

Private Attributes

View_source< Range_tm_range {}
 Range object. More...
 
Iterator_t m_iterator {}
 Iterator into the range. More...
 

Additional Inherited Members

- Protected Types inherited from mysql::iterators::Iterator_interface< Iterator_with_range< Range_tp > >
using Self_t = Iterator_with_range< Range_tp >
 

Detailed Description

template<std::ranges::range Range_tp>
class mysql::ranges::Iterator_with_range< Range_tp >

Iterator that holds a reference to its source range.

Since the iterator knows its range, it always knows whether it is positioned at the end, without having to compare with other objects.

Member Typedef Documentation

◆ Iterator_t

template<std::ranges::range Range_tp>
using mysql::ranges::Iterator_with_range< Range_tp >::Iterator_t = Range_const_iterator_type<Range_t>

◆ Range_t

template<std::ranges::range Range_tp>
using mysql::ranges::Iterator_with_range< Range_tp >::Range_t = Range_tp

Constructor & Destructor Documentation

◆ Iterator_with_range() [1/3]

template<std::ranges::range Range_tp>
mysql::ranges::Iterator_with_range< Range_tp >::Iterator_with_range ( )
default

Construct a singular object.

◆ Iterator_with_range() [2/3]

template<std::ranges::range Range_tp>
mysql::ranges::Iterator_with_range< Range_tp >::Iterator_with_range ( const Range_t range,
const Iterator_t iterator 
)
inlineexplicit

Construct a new object from the given range, and set the iterator to the beginning.

◆ Iterator_with_range() [3/3]

template<std::ranges::range Range_tp>
mysql::ranges::Iterator_with_range< Range_tp >::Iterator_with_range ( const Range_t range)
inlineexplicit

Construct a new object from the given range, and set the iterator to the beginning.

Member Function Documentation

◆ advance()

template<std::ranges::range Range_tp>
void mysql::ranges::Iterator_with_range< Range_tp >::advance ( std::ptrdiff_t  delta)
inline

◆ distance_from()

template<std::ranges::range Range_tp>
std::ptrdiff_t mysql::ranges::Iterator_with_range< Range_tp >::distance_from ( const Iterator_with_range< Range_tp > &  other) const
inline

◆ get()

template<std::ranges::range Range_tp>
decltype(auto) mysql::ranges::Iterator_with_range< Range_tp >::get ( ) const
inline

◆ get_pointer()

template<std::ranges::range Range_tp>
decltype(auto) mysql::ranges::Iterator_with_range< Range_tp >::get_pointer ( ) const
inline

◆ is_end()

template<std::ranges::range Range_tp>
bool mysql::ranges::Iterator_with_range< Range_tp >::is_end ( ) const
inline

◆ is_equal()

template<std::ranges::range Range_tp>
bool mysql::ranges::Iterator_with_range< Range_tp >::is_equal ( const Iterator_with_range< Range_tp > &  other) const
inline

◆ iterator() [1/2]

template<std::ranges::range Range_tp>
auto & mysql::ranges::Iterator_with_range< Range_tp >::iterator ( )
inline

◆ iterator() [2/2]

template<std::ranges::range Range_tp>
const auto & mysql::ranges::Iterator_with_range< Range_tp >::iterator ( ) const
inline

◆ next()

template<std::ranges::range Range_tp>
void mysql::ranges::Iterator_with_range< Range_tp >::next ( )
inline

◆ prev()

template<std::ranges::range Range_tp>
void mysql::ranges::Iterator_with_range< Range_tp >::prev ( )
inline

◆ range() [1/2]

template<std::ranges::range Range_tp>
auto & mysql::ranges::Iterator_with_range< Range_tp >::range ( )
inline

◆ range() [2/2]

template<std::ranges::range Range_tp>
const auto & mysql::ranges::Iterator_with_range< Range_tp >::range ( ) const
inline

Member Data Documentation

◆ m_iterator

template<std::ranges::range Range_tp>
Iterator_t mysql::ranges::Iterator_with_range< Range_tp >::m_iterator {}
private

Iterator into the range.

◆ m_range

template<std::ranges::range Range_tp>
View_source<Range_t> mysql::ranges::Iterator_with_range< Range_tp >::m_range {}
private

Range object.


The documentation for this class was generated from the following file: