ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::ranges::detail::join_iterator< range_t > Struct Template Reference

Sequentially iterate through multiple ranges of the same type. More...

#include <detray/utils/ranges/join.hpp>

Public Types

using difference_type = std::iter_difference_t<iterator_t>
 Distance type of the inner iterator.
using inner_iterator_t
 Iterator used to traverse each inner range.
using iterator_category
 Iterator category supported by the inner iterator.
using iterator_t = inner_iterator_t
 Iterator type of the current inner range.
using outer_iterator_t
 Iterator used to traverse the outer range of ranges.
using outer_value_t = decltype(*std::declval<outer_iterator_t>())
 Reference type obtained from the outer iterator.
using pointer = typename std::iterator_traits<iterator_t>::pointer
 Pointer type associated with the inner iterator.
using reference = std::iter_reference_t<iterator_t>
 Reference type yielded by the inner iterator.
using value_type = std::iter_value_t<iterator_t>
 Value yielded by dereferencing the join iterator.

Public Member Functions

constexpr join_iterator ()=default
 Default constructor required by LegacyIterator trait.
constexpr join_iterator (outer_iterator_t begin, outer_iterator_t end)
 Construct from range of ranges (.
constexpr decltype(auto) operator* () const
constexpr auto operator+= (const difference_type j) -> join_iterator &
 Advance the joined iterator by j elements.
constexpr auto operator-= (const difference_type j) -> join_iterator &
 Retreat the joined iterator by j elements.
constexpr decltype(auto) operator[] (const difference_type i) const
 Return the element at an offset from this position.
auto operator++ () -> join_iterator &
 Increment current iterator and check for switch between ranges.
constexpr auto operator++ (int) -> join_iterator
 Increment and return the iterator's previous position.
constexpr auto operator-- () -> join_iterator &
 Decrement current iterator and check for switch between ranges.
constexpr auto operator-- (int) -> join_iterator
 Decrement and return the iterator's previous position.

Detailed Description

template<detray::ranges::range range_t>
struct detray::ranges::detail::join_iterator< range_t >

Sequentially iterate through multiple ranges of the same type.

Once the sentinel of one range is reached, set the current iterator to the next ranges 'begin' (or 'end' if decrementing)

Template Parameters
range_ta range that contains the ranges to be joined.

Member Typedef Documentation

◆ inner_iterator_t

template<detray::ranges::range range_t>
using detray::ranges::detail::join_iterator< range_t >::inner_iterator_t
Initial value:
std::conditional_t<
std::is_same_v<outer_iterator_t,
detray::ranges::const_iterator_t<range_t>>,
detray::ranges::const_iterator_t<outer_value_t>,
detray::ranges::iterator_t<outer_value_t>>
std::conditional_t< std::is_const_v< range_t >, detray::ranges::const_iterator_t< range_t >, detray::ranges::iterator_t< range_t > > outer_iterator_t
Iterator used to traverse the outer range of ranges.
Definition join.hpp:162

Iterator used to traverse each inner range.

◆ iterator_category

template<detray::ranges::range range_t>
using detray::ranges::detail::join_iterator< range_t >::iterator_category
Initial value:
typename std::iterator_traits<iterator_t>::iterator_category

Iterator category supported by the inner iterator.

◆ outer_iterator_t

template<detray::ranges::range range_t>
using detray::ranges::detail::join_iterator< range_t >::outer_iterator_t
Initial value:
std::conditional_t<std::is_const_v<range_t>,
detray::ranges::const_iterator_t<range_t>,
detray::ranges::iterator_t<range_t>>

Iterator used to traverse the outer range of ranges.

Constructor & Destructor Documentation

◆ join_iterator()

template<detray::ranges::range range_t>
detray::ranges::detail::join_iterator< range_t >::join_iterator ( outer_iterator_t begin,
outer_iterator_t end )
constexpr

Construct from range of ranges (.

Parameters
beginand
end)

Member Function Documentation

◆ operator*()

template<detray::ranges::range range_t>
decltype(auto) detray::ranges::detail::join_iterator< range_t >::operator* ( ) const
constexpr
Returns
the single value that the iterator points to - const

◆ operator++() [1/2]

template<detray::ranges::range range_t>
auto detray::ranges::detail::join_iterator< range_t >::operator++ ( ) ->join_iterator &

Increment current iterator and check for switch between ranges.

Returns
A reference to this iterator after incrementing.

◆ operator++() [2/2]

template<detray::ranges::range range_t>
auto detray::ranges::detail::join_iterator< range_t >::operator++ ( int ) ->join_iterator
constexpr

Increment and return the iterator's previous position.

Returns
A copy of the iterator before incrementing.

◆ operator+=()

template<detray::ranges::range range_t>
auto detray::ranges::detail::join_iterator< range_t >::operator+= ( const difference_type j) ->join_iterator &
constexpr

Advance the joined iterator by j elements.

Parameters
jnumber of elements to advance
Returns
A reference to this iterator after advancing.

◆ operator--() [1/2]

template<detray::ranges::range range_t>
auto detray::ranges::detail::join_iterator< range_t >::operator-- ( ) ->join_iterator &
constexpr

Decrement current iterator and check for switch between ranges.

Returns
A reference to this iterator after decrementing.

◆ operator--() [2/2]

template<detray::ranges::range range_t>
auto detray::ranges::detail::join_iterator< range_t >::operator-- ( int ) ->join_iterator
constexpr

Decrement and return the iterator's previous position.

Returns
A copy of the iterator before decrementing.

◆ operator-=()

template<detray::ranges::range range_t>
auto detray::ranges::detail::join_iterator< range_t >::operator-= ( const difference_type j) ->join_iterator &
constexpr

Retreat the joined iterator by j elements.

Parameters
jnumber of elements to retreat
Returns
A reference to this iterator after retreating.

◆ operator[]()

template<detray::ranges::range range_t>
decltype(auto) detray::ranges::detail::join_iterator< range_t >::operator[] ( const difference_type i) const
constexpr

Return the element at an offset from this position.

Parameters
izero-based offset from this iterator
Returns
the value at a given position - const