SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
|
Iterator wrapper for the underlying range iterator enforcing std::random_access_iterator_tag. More...
#include <seqan3/utility/views/enforce_random_access.hpp>
Public Types | |
using | iterator_category = std::random_access_iterator_tag |
The new iterator category. | |
using | iterator_concept = iterator_category |
The new iterator concept. | |
Public Types inherited from seqan3::detail::inherited_iterator_base< basic_iterator< underlying_iter_t >, underlying_iter_t > | |
using | difference_type = std::iter_difference_t< base_t > |
The difference type. | |
using | value_type = std::iter_value_t< base_t > |
The value type. | |
using | reference = std::iter_reference_t< base_t > |
The reference type. | |
using | pointer = detail::iter_pointer_t< base_t > |
The pointer type. | |
using | iterator_category = maybe_present |
The iterator category tag. | |
using | iterator_concept = detail::iterator_concept_tag_t< base_t > |
The iterator concept tag. | |
Public Types inherited from seqan3::detail::maybe_iterator_category< underlying_iterator_t > | |
using | iterator_category = MAYBE_PRESENT(std::iterator_traits< underlying_iterator_t >::iterator_category) |
The iterator category tag. (not always present!) | |
Public Member Functions | |
Constructors, destructor and assignment | |
constexpr | basic_iterator ()=default |
Defaulted. | |
constexpr | basic_iterator (basic_iterator const &)=default |
Defaulted. | |
constexpr | basic_iterator (basic_iterator &&)=default |
Defaulted. | |
constexpr basic_iterator & | operator= (basic_iterator const &)=default |
Defaulted. | |
constexpr basic_iterator & | operator= (basic_iterator &&)=default |
Defaulted. | |
~basic_iterator ()=default | |
Defaulted. | |
Public Member Functions inherited from seqan3::detail::inherited_iterator_base< basic_iterator< underlying_iter_t >, underlying_iter_t > | |
constexpr base_t | base () &&noexcept |
Returns an rvalue of the base. | |
constexpr base_t & | base () &noexcept |
Get a reference to the base. | |
constexpr base_t const & | base () const &noexcept |
Get a const reference to the base. | |
constexpr | inherited_iterator_base () noexcept(std::is_nothrow_default_constructible_v< base_t >)=default |
Defaulted. | |
constexpr | inherited_iterator_base (inherited_iterator_base const &rhs) noexcept(std::is_nothrow_copy_constructible_v< base_t >)=default |
Defaulted. | |
constexpr | inherited_iterator_base (inherited_iterator_base &&rhs) noexcept(std::is_nothrow_move_constructible_v< base_t >)=default |
Defaulted. | |
constexpr | inherited_iterator_base (base_t it) noexcept(std::is_nothrow_move_constructible_v< base_t >) |
Delegate to base class if inheriting from non-pointer iterator. | |
constexpr | inherited_iterator_base (base_t it) noexcept |
Initialise member if deriving from pointer. | |
constexpr inherited_iterator_base & | operator= (inherited_iterator_base const &rhs) noexcept(std::is_nothrow_copy_assignable_v< base_t >)=default |
Defaulted. | |
constexpr inherited_iterator_base & | operator= (inherited_iterator_base &&rhs) noexcept(std::is_nothrow_move_assignable_v< base_t >)=default |
Defaulted. | |
~inherited_iterator_base () noexcept(std::is_nothrow_destructible_v< base_t >)=default | |
Defaulted. | |
constexpr bool | operator== (basic_iterator< underlying_iter_t > const &rhs) const noexcept(noexcept(std::declval< base_t & >()==std::declval< base_t & >())) |
Checks whether *this is equal to rhs . | |
constexpr bool | operator!= (basic_iterator< underlying_iter_t > const &rhs) const noexcept(noexcept(std::declval< base_t & >()==std::declval< base_t & >())) |
Checks whether *this is not equal to rhs . | |
constexpr bool | operator< (basic_iterator< underlying_iter_t > const &rhs) const noexcept(noexcept(std::declval< base_t & >()< std::declval< base_t & >())) |
Checks whether *this is less than rhs . | |
constexpr bool | operator> (basic_iterator< underlying_iter_t > const &rhs) const noexcept(noexcept(std::declval< base_t & >() > std::declval< base_t & >())) |
Checks whether *this is greater than rhs . | |
constexpr bool | operator<= (basic_iterator< underlying_iter_t > const &rhs) const noexcept(noexcept(std::declval< base_t & >() > std::declval< base_t & >())) |
Checks whether *this is less than or equal to rhs . | |
constexpr bool | operator>= (basic_iterator< underlying_iter_t > const &rhs) const noexcept(noexcept(std::declval< base_t & >()< std::declval< base_t & >())) |
Checks whether *this is greater than or equal to rhs . | |
constexpr reference | operator* () noexcept(noexcept(*std::declval< base_t & >())) |
Dereference operator returns element currently pointed at. | |
constexpr decltype(auto) | operator* () const noexcept(noexcept(*std::declval< base_t const & >())) |
Dereference operator returns element currently pointed at. | |
constexpr pointer | operator-> () noexcept(noexcept(*std::declval< base_t & >())) |
Return pointer to this iterator. | |
constexpr decltype(auto) | operator-> () const noexcept(noexcept(*std::declval< base_t const & >())) |
Return pointer to this iterator. | |
constexpr decltype(auto) | operator[] (std::make_signed_t< difference_type > const n) noexcept(noexcept(std::declval< base_t & >()[0])) |
Return underlying container value currently pointed at. | |
constexpr decltype(auto) | operator[] (std::make_signed_t< difference_type > const n) const noexcept(noexcept(std::declval< base_t const & >()[0])) |
Return underlying container value currently pointed at. | |
constexpr basic_iterator< underlying_iter_t > & | operator++ () noexcept(noexcept(++std::declval< base_t & >())) |
Pre-increment, return updated iterator. | |
constexpr auto | operator++ (int) noexcept(noexcept(std::declval< base_t & >()++)) |
Post-increment of input iterators that do not return a copy of themselves but void or a proxy type. | |
constexpr basic_iterator< underlying_iter_t > | operator++ (int) noexcept(noexcept(std::declval< base_t & >()++) &&noexcept(basic_iterator< underlying_iter_t >(std::declval< base_t & >()))) |
Post-increment, return previous iterator state. | |
constexpr basic_iterator< underlying_iter_t > & | operator-- () noexcept(noexcept(--std::declval< base_t & >())) |
Pre-decrement, return updated iterator. | |
constexpr basic_iterator< underlying_iter_t > | operator-- (int) noexcept(noexcept(std::declval< base_t & >() --) &&noexcept(basic_iterator< underlying_iter_t > {std::declval< base_t & >()})) |
Post-decrement, return previous iterator state. | |
constexpr basic_iterator< underlying_iter_t > & | operator+= (difference_type const skip) noexcept(noexcept(std::declval< base_t & >()+=skip)) |
Move iterator to the right. | |
constexpr basic_iterator< underlying_iter_t > | operator+ (difference_type const skip) const noexcept(noexcept(std::declval< base_t & >()+skip) &&noexcept(basic_iterator< underlying_iter_t > {std::declval< base_t & >()})) |
Returns an iterator which is advanced by skip positions. | |
constexpr basic_iterator< underlying_iter_t > & | operator-= (difference_type const skip) noexcept(noexcept(std::declval< base_t & >() -=skip)) |
Decrement iterator by skip. | |
constexpr basic_iterator< underlying_iter_t > | operator- (difference_type const skip) const noexcept(noexcept(std::declval< base_t const & >() - skip) &&noexcept(basic_iterator< underlying_iter_t >(std::declval< base_t & >()))) |
Return decremented copy of this iterator. | |
constexpr difference_type | operator- (basic_iterator< underlying_iter_t > const &rhs) const noexcept(noexcept(std::declval< base_t & >() - std::declval< base_t & >())) |
Return offset between this and remote iterator's position. | |
Private Types | |
using | base_t = inherited_iterator_base< basic_iterator< underlying_iter_t >, underlying_iter_t > |
The type of the base class. | |
Friends | |
Comparison operators | |
Comparison with sentinel of underlying range. | |
constexpr bool | operator== (basic_iterator const &lhs, std::ranges::sentinel_t< urng_t > const &rhs) noexcept(noexcept(std::declval< underlying_iter_t const & >()==std::declval< std::ranges::sentinel_t< urng_t > const & >())) |
Tests if iterator is at the end. | |
constexpr bool | operator== (std::ranges::sentinel_t< urng_t > const &lhs, basic_iterator const &rhs) noexcept(noexcept(std::declval< underlying_iter_t const & >()==std::declval< std::ranges::sentinel_t< urng_t > const & >())) |
Tests if iterator is at the end. | |
constexpr bool | operator!= (basic_iterator const &lhs, std::ranges::sentinel_t< urng_t > const &rhs) noexcept(noexcept(std::declval< underlying_iter_t const & >() !=std::declval< std::ranges::sentinel_t< urng_t > const & >())) |
Tests if iterator is not at the end. | |
constexpr bool | operator!= (std::ranges::sentinel_t< urng_t > const &lhs, basic_iterator const &rhs) noexcept(noexcept(std::declval< underlying_iter_t const & >() !=std::declval< std::ranges::sentinel_t< urng_t > const & >())) |
Tests if iterator is not at the end. | |
Friends inherited from seqan3::detail::inherited_iterator_base< basic_iterator< underlying_iter_t >, underlying_iter_t > |
Arithmetic operators | |
constexpr base_t::difference_type | operator- (std::ranges::sentinel_t< urng_t > const &rhs) const noexcept(noexcept(std::declval< underlying_iter_t const & >() - std::declval< std::ranges::sentinel_t< urng_t > const & >())) |
Computes the distance betwen this iterator and the sentinel of the underlying range. | |
constexpr friend base_t::difference_type | operator- (std::ranges::sentinel_t< urng_t > const &lhs, basic_iterator const &rhs) noexcept(noexcept(std::declval< std::ranges::sentinel_t< urng_t > const & >() - std::declval< underlying_iter_t const & >())) |
Computes the distance betwen this iterator and the sentinel of the underlying range. | |
Iterator wrapper for the underlying range iterator enforcing std::random_access_iterator_tag.
underlying_iter_t | The type of the underlying range iterator. |
This class inherits all properties of the underlying range iterator and overwrites the iterator category to be std::random_access_range_tag.