Helios Engine 0.1.0
A modular ECS based data-oriented C++23 game engine
 
Loading...
Searching...
No Matches
helios::utils::SkipAdapter< Iter > Class Template Reference

#include <functional_adapters.hpp>

Inheritance diagram for helios::utils::SkipAdapter< Iter >:
helios::utils::FunctionalAdapterBase< SkipAdapter< Iter > >

Public Types

using iterator_category = std::forward_iterator_tag
 
using value_type = std::iter_value_t< Iter >
 
using difference_type = std::iter_difference_t< Iter >
 
using pointer = value_type *
 
using reference = value_type
 

Public Member Functions

constexpr SkipAdapter (Iter begin, Iter end, size_t count) noexcept(std::is_nothrow_move_constructible_v< Iter > &&noexcept(++std::declval< Iter & >()))
 Constructs a skip adapter with the given iterator range and count.
 
constexpr SkipAdapter (const SkipAdapter &) noexcept(std::is_nothrow_copy_constructible_v< Iter >)=default
 
constexpr SkipAdapter (SkipAdapter &&) noexcept(std::is_nothrow_move_constructible_v< Iter >)=default
 
constexpr ~SkipAdapter () noexcept(std::is_nothrow_destructible_v< Iter >)=default
 
constexpr SkipAdapteroperator= (const SkipAdapter &) noexcept(std::is_nothrow_copy_assignable_v< Iter >)=default
 
constexpr SkipAdapteroperator= (SkipAdapter &&) noexcept(std::is_nothrow_move_assignable_v< Iter >)=default
 
constexpr SkipAdapteroperator++ () noexcept(noexcept(++std::declval< Iter & >()))
 
constexpr SkipAdapter operator++ (int) noexcept(std::is_nothrow_copy_constructible_v< SkipAdapter > &&noexcept(++std::declval< SkipAdapter & >()))
 
constexpr value_type operator* () const noexcept(noexcept(*std::declval< const Iter & >()))
 
constexpr bool operator== (const SkipAdapter &other) const noexcept(noexcept(std::declval< const Iter & >()==std::declval< const Iter & >()))
 
constexpr bool operator!= (const SkipAdapter &other) const noexcept(noexcept(std::declval< const SkipAdapter & >()==std::declval< const SkipAdapter & >()))
 
constexpr SkipAdapter begin () const noexcept(std::is_nothrow_copy_constructible_v< SkipAdapter >)
 
constexpr SkipAdapter end () const noexcept(std::is_nothrow_constructible_v< SkipAdapter, const Iter &, const Iter &, size_t >)
 

Detailed Description

template<typename Iter>
requires SkipAdapterRequirements<Iter>
class helios::utils::SkipAdapter< Iter >

Definition at line 772 of file functional_adapters.hpp.

Member Typedef Documentation

◆ difference_type

template<typename Iter >
using helios::utils::SkipAdapter< Iter >::difference_type = std::iter_difference_t<Iter>

◆ iterator_category

template<typename Iter >
using helios::utils::SkipAdapter< Iter >::iterator_category = std::forward_iterator_tag

◆ pointer

◆ reference

◆ value_type

template<typename Iter >
using helios::utils::SkipAdapter< Iter >::value_type = std::iter_value_t<Iter>

Constructor & Destructor Documentation

◆ SkipAdapter() [1/3]

template<typename Iter >
requires SkipAdapterRequirements<Iter>
constexpr helios::utils::SkipAdapter< Iter >::SkipAdapter ( Iter  begin,
Iter  end,
size_t  count 
)
constexprnoexcept

Constructs a skip adapter with the given iterator range and count.

Parameters
beginStart of the iterator range
endEnd of the iterator range
countNumber of elements to skip
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 830 of file functional_adapters.hpp.

833 : current_(std::move(begin)), end_(std::move(end)) {
834 for (size_t idx = 0; idx < count && current_ != end_; ++idx) {
835 ++current_;
836 }
837}
constexpr SkipAdapter end() const noexcept(std::is_nothrow_constructible_v< SkipAdapter, const Iter &, const Iter &, size_t >)
constexpr SkipAdapter begin() const noexcept(std::is_nothrow_copy_constructible_v< SkipAdapter >)

◆ SkipAdapter() [2/3]

template<typename Iter >
constexpr helios::utils::SkipAdapter< Iter >::SkipAdapter ( const SkipAdapter< Iter > &  ) const
constexprdefaultnoexcept

◆ SkipAdapter() [3/3]

template<typename Iter >
constexpr helios::utils::SkipAdapter< Iter >::SkipAdapter ( SkipAdapter< Iter > &&  ) const
constexprdefaultnoexcept

◆ ~SkipAdapter()

Member Function Documentation

◆ begin()

template<typename Iter >
constexpr SkipAdapter helios::utils::SkipAdapter< Iter >::begin ( ) const
inlineconstexprnoexcept

◆ end()

template<typename Iter >
constexpr SkipAdapter helios::utils::SkipAdapter< Iter >::end ( ) const
inlineconstexprnoexcept

◆ operator!=()

template<typename Iter >
constexpr bool helios::utils::SkipAdapter< Iter >::operator!= ( const SkipAdapter< Iter > &  other) const
inlineconstexprnoexcept

◆ operator*()

template<typename Iter >
constexpr value_type helios::utils::SkipAdapter< Iter >::operator* ( ) const
inlineconstexprnoexcept

◆ operator++() [1/2]

template<typename Iter >
requires SkipAdapterRequirements<Iter>
constexpr auto helios::utils::SkipAdapter< Iter >::operator++ ( )
constexprnoexcept
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 841 of file functional_adapters.hpp.

841 {
842 ++current_;
843 return *this;
844}

◆ operator++() [2/2]

template<typename Iter >
requires SkipAdapterRequirements<Iter>
constexpr auto helios::utils::SkipAdapter< Iter >::operator++ ( int  )
constexprnoexcept

Definition at line 848 of file functional_adapters.hpp.

849 {
850 auto temp = *this;
851 ++(*this);
852 return temp;
853}

◆ operator=() [1/2]

template<typename Iter >
constexpr SkipAdapter & helios::utils::SkipAdapter< Iter >::operator= ( const SkipAdapter< Iter > &  )
constexprdefaultnoexcept

◆ operator=() [2/2]

template<typename Iter >
constexpr SkipAdapter & helios::utils::SkipAdapter< Iter >::operator= ( SkipAdapter< Iter > &&  )
constexprdefaultnoexcept

◆ operator==()

template<typename Iter >
constexpr bool helios::utils::SkipAdapter< Iter >::operator== ( const SkipAdapter< Iter > &  other) const
inlineconstexprnoexcept
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 804 of file functional_adapters.hpp.

805 {
806 return current_ == other.current_;
807 }