ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::ranges::views::enumerate< range_itr_t, incr_t > Struct Template Reference

Range adaptor that creates an enumerate view, optionally starting at a selected index. More...

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

Inheritance diagram for detray::ranges::views::enumerate< range_itr_t, incr_t >:
[legend]
Collaboration diagram for detray::ranges::views::enumerate< range_itr_t, incr_t >:
[legend]

Public Types

using base_type = enumerate_view<range_itr_t, incr_t>
 Base range view implementation.
Public Types inherited from detray::ranges::enumerate_view< range_itr_t, dindex >
using iterator_t
 Iterator yielding each element together with its enumeration index.

Public Member Functions

template<detray::ranges::range range_t>
constexpr auto operator() (range_t &&rng)
 Call operator for range composition.
constexpr enumerate ()=default
 Partial construction for range composition.
constexpr enumerate (incr_t start)
 Create an adaptor that starts enumeration at start.
template<detray::ranges::range range_t>
requires (!std::same_as<range_t, enumerate>)
constexpr enumerate (range_t &&rng)
 Direct view constructionCreate a view starting at zero.
template<detray::ranges::range range_t>
constexpr enumerate (range_t &&rng, incr_t start)
 Create a view starting at start.
template<detray::ranges::range deduced_range_t, typename volume_t, typename = typename std::remove_reference_t<volume_t>::volume_def>
 enumerate (deduced_range_t &&range, const volume_t &vol)
 Enumerate the portion of range covered by vol, using its first index.
Public Member Functions inherited from detray::ranges::enumerate_view< range_itr_t, dindex >
constexpr enumerate_view ()=default
 Default constructor (only works if imrementable_t is default constructible).
constexpr auto begin () -> iterator
constexpr auto end () const -> iterator
Public Member Functions inherited from detray::ranges::view_interface< enumerate_view< range_itr_t, incr_t > >
constexpr decltype(auto) back () const
 Return a reference to the last element.
constexpr auto data () const
 Return a pointer to the first element, or null for an empty view.
constexpr auto empty () const -> bool
 Check whether the view contains no elements.
constexpr decltype(auto) front () const
 Return a reference to the first element.
constexpr operator bool () const
 Test whether the view contains at least one element.
constexpr decltype(auto) operator[] (const dindex i) const
 Subscript operator that takes detray dindex.
constexpr auto size () const
 Return the number of elements in the view.

Detailed Description

template<std::input_iterator range_itr_t, std::incrementable incr_t = dindex>
requires std::convertible_to<std::iter_difference_t<range_itr_t>, incr_t>
struct detray::ranges::views::enumerate< range_itr_t, incr_t >

Range adaptor that creates an enumerate view, optionally starting at a selected index.

Constructor & Destructor Documentation

◆ enumerate() [1/4]

template<std::input_iterator range_itr_t, std::incrementable incr_t = dindex>
detray::ranges::views::enumerate< range_itr_t, incr_t >::enumerate ( incr_t start)
explicitconstexpr

Create an adaptor that starts enumeration at start.

Parameters
startinitial enumeration index

◆ enumerate() [2/4]

template<std::input_iterator range_itr_t, std::incrementable incr_t = dindex>
template<detray::ranges::range range_t>
requires (!std::same_as<range_t, enumerate>)
detray::ranges::views::enumerate< range_itr_t, incr_t >::enumerate ( range_t && rng)
explicitconstexpr

Direct view constructionCreate a view starting at zero.

Parameters
rngrange to enumerate

◆ enumerate() [3/4]

template<std::input_iterator range_itr_t, std::incrementable incr_t = dindex>
template<detray::ranges::range range_t>
detray::ranges::views::enumerate< range_itr_t, incr_t >::enumerate ( range_t && rng,
incr_t start )
constexpr

Create a view starting at start.

Parameters
rngrange to enumerate
startinitial enumeration index

◆ enumerate() [4/4]

template<std::input_iterator range_itr_t, std::incrementable incr_t = dindex>
template<detray::ranges::range deduced_range_t, typename volume_t, typename = typename std::remove_reference_t<volume_t>::volume_def>
detray::ranges::views::enumerate< range_itr_t, incr_t >::enumerate ( deduced_range_t && range,
const volume_t & vol )

Enumerate the portion of range covered by vol, using its first index.

Parameters
rangerange to narrow to the volume
volvolume whose full-range start defines the initial index

Member Function Documentation

◆ operator()()

template<std::input_iterator range_itr_t, std::incrementable incr_t = dindex>
template<detray::ranges::range range_t>
auto detray::ranges::views::enumerate< range_itr_t, incr_t >::operator() ( range_t && rng)
constexpr

Call operator for range composition.

Parameters
rngrange to enumerate
Returns
an enumerate view using this adaptor's starting index