SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
seqan3::detail::view_interleave< urng_t, inserted_rng_t > Class Template Reference

The type returned by seqan3::views::interleave. More...

#include <seqan3/utility/views/interleave.hpp>

+ Inheritance diagram for seqan3::detail::view_interleave< urng_t, inserted_rng_t >:

Public Member Functions

reference operator[] (size_type const i)
 Return the i-th element.
 
const_reference operator[] (size_type const i) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
size_type size ()
 Returns the number of elements in the view.
 
size_type size () const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
Constructors, destructor and assignment
constexpr view_interleave () noexcept=default
 Defaulted.
 
constexpr view_interleave (view_interleave const &rhs) noexcept=default
 Defaulted.
 
constexpr view_interleave (view_interleave &&rhs) noexcept=default
 Defaulted.
 
constexpr view_interleaveoperator= (view_interleave const &rhs) noexcept=default
 Defaulted.
 
constexpr view_interleaveoperator= (view_interleave &&rhs) noexcept=default
 Defaulted.
 
 ~view_interleave () noexcept=default
 Defaulted.
 
constexpr view_interleave (urng_t &&_urange, size_t const _step_size, inserted_rng_t &&_inserted_range)
 Construct from a standard random_access_range urange and inserted_range.
 
template<typename orng_t , typename oirng_t >
requires std::constructible_from<urng_t, decltype(views::type_reduce(std::declval<orng_t>()))> && std::constructible_from<inserted_rng_t, seqan3::detail::all_t<oirng_t>>
constexpr view_interleave (orng_t &&_urange, size_t const _step_size, oirng_t &&_inserted_range)
 Construct from a viewable_range urange and inserted_range by wrapping in a views::type_reduce.
 
Iterators
iterator begin () noexcept
 Returns an iterator to the first element of the container.
 
const_iterator begin () const noexcept
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
iterator end () noexcept
 Returns an iterator to the element following the last element of the container.
 
const_iterator end () const noexcept
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 

Private Types

Associated types

These associated types are needed in seqan3::detail::random_access_iterator.

using size_type = std::ranges::range_size_t< urng_t >
 This resolves to range_type::size_type as the underlying range is guaranteed to be sized.
 
using reference = std::common_reference_t< std::ranges::range_reference_t< urng_t >, std::ranges::range_reference_t< inserted_rng_t > >
 The reference_type.
 
using const_reference = detail::transformation_trait_or_t< std::common_reference< std::ranges::range_reference_t< urng_t const >, std::ranges::range_reference_t< inserted_rng_t const > >, void >
 The const_reference type is equal to the reference type.
 
using value_type = std::ranges::range_value_t< urng_t >
 The value_type (which equals the reference_type with any references removed).
 
using difference_type = std::ranges::range_difference_t< urng_t >
 A signed integer type, usually std::ptrdiff_t.
 
using iterator = detail::random_access_iterator< view_interleave >
 The iterator type of this view (a random access iterator).
 
using const_iterator = detail::random_access_iterator< view_interleave const >
 The const_iterator type is equal to the iterator type.
 

Private Attributes

inserted_rng_t inserted_range
 The range to be inserted into urange.
 
size_t step_size {}
 The step size for the insertion.
 
urng_t urange
 The underlying range.
 

Friends

template<typename range_type , template< typename... > typename derived_t_template, typename... args_t>
class detail::random_access_iterator_base
 Befriend the following class s.t. iterator and const_iterator can be defined for this type.
 

Related Symbols

(Note that these are not member symbols.)

template<std::ranges::random_access_range urng_t, std::ranges::random_access_range inserted_rng_t>
 view_interleave (urng_t &&, size_t, inserted_rng_t &&) -> view_interleave< decltype(views::type_reduce(std::declval< urng_t >())), seqan3::detail::all_t< inserted_rng_t > >
 Template argument type deduction guide for viewable_range inputs.
 

Detailed Description

template<std::ranges::random_access_range urng_t, std::ranges::random_access_range inserted_rng_t>
requires std::ranges::view<urng_t> && std::ranges::sized_range<urng_t> && std::ranges::view<inserted_rng_t> && std::ranges::sized_range<inserted_rng_t> && std::common_reference_with<std::ranges::range_reference_t<urng_t>, std::ranges::range_reference_t<inserted_rng_t>>
class seqan3::detail::view_interleave< urng_t, inserted_rng_t >

The type returned by seqan3::views::interleave.

Template Parameters
urng_tThe type of the underlying range, must model std::ranges::random_access_range.

Note that most members of this class are generated by std::ranges::view_interface which is not yet documented here.

Constructor & Destructor Documentation

◆ view_interleave() [1/2]

template<std::ranges::random_access_range urng_t, std::ranges::random_access_range inserted_rng_t>
constexpr seqan3::detail::view_interleave< urng_t, inserted_rng_t >::view_interleave ( urng_t &&  _urange,
size_t const  _step_size,
inserted_rng_t &&  _inserted_range 
)
inlineexplicitconstexpr

Construct from a standard random_access_range urange and inserted_range.

Parameters
[in]_urangeThe underlying range.
[in]_step_sizeThe step size for the insertion.
[in]_inserted_rangeThe range to be inserted.

◆ view_interleave() [2/2]

template<std::ranges::random_access_range urng_t, std::ranges::random_access_range inserted_rng_t>
template<typename orng_t , typename oirng_t >
requires std::constructible_from<urng_t, decltype(views::type_reduce(std::declval<orng_t>()))> && std::constructible_from<inserted_rng_t, seqan3::detail::all_t<oirng_t>>
constexpr seqan3::detail::view_interleave< urng_t, inserted_rng_t >::view_interleave ( orng_t &&  _urange,
size_t const  _step_size,
oirng_t &&  _inserted_range 
)
inlineexplicitconstexpr

Construct from a viewable_range urange and inserted_range by wrapping in a views::type_reduce.

Template Parameters
orng_tA type that is the same as urng_t once wrapped in a view (e.g. reference to container).
oirng_tA type that is the same as inserted_rng_t once wrapped in a view (e.g. reference to container).
Parameters
[in]_urangeThe underlying range.
[in]_step_sizeThe step size for the insertion.
[in]_inserted_rangeThe range to be inserted.

Member Function Documentation

◆ begin()

template<std::ranges::random_access_range urng_t, std::ranges::random_access_range inserted_rng_t>
iterator seqan3::detail::view_interleave< urng_t, inserted_rng_t >::begin ( )
inlinenoexcept

Returns an iterator to the first element of the container.

Returns
Iterator to the first element.

If the container is empty, the returned iterator will be equal to end().

Complexity

Constant.

Exceptions

No-throw guarantee.

◆ end()

template<std::ranges::random_access_range urng_t, std::ranges::random_access_range inserted_rng_t>
iterator seqan3::detail::view_interleave< urng_t, inserted_rng_t >::end ( )
inlinenoexcept

Returns an iterator to the element following the last element of the container.

Returns
Iterator to the first element.

This element acts as a placeholder; attempting to dereference it results in undefined behaviour.

Complexity

Constant.

Exceptions

No-throw guarantee.

◆ operator[]()

template<std::ranges::random_access_range urng_t, std::ranges::random_access_range inserted_rng_t>
reference seqan3::detail::view_interleave< urng_t, inserted_rng_t >::operator[] ( size_type const  i)
inline

Return the i-th element.

Parameters
iThe element to retrieve.
Returns
Either a writable proxy to the element or a copy (if called in const context).

Accessing an element behind the last causes undefined behaviour. In debug mode an assertion checks the size of the container.

Complexity

Constant.

Exceptions

No-throw guarantee.

◆ size()

template<std::ranges::random_access_range urng_t, std::ranges::random_access_range inserted_rng_t>
size_type seqan3::detail::view_interleave< urng_t, inserted_rng_t >::size ( )
inline

Returns the number of elements in the view.

Returns
The number of elements in the view.

Complexity

Constant.


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