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

#include <functional_adapters.hpp>

Inheritance diagram for helios::utils::SkipWhileAdapter< Iter, Pred >:
helios::utils::FunctionalAdapterBase< SkipWhileAdapter< Iter, Pred > >

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 SkipWhileAdapter (Iter begin, Iter end, Pred predicate) noexcept(std::is_nothrow_move_constructible_v< Iter > &&std::is_nothrow_move_constructible_v< Pred > &&noexcept(AdvancePastSkipped()))
 Constructs a skip-while adapter with the given iterator range and predicate.
 
constexpr SkipWhileAdapter (const SkipWhileAdapter &) noexcept(std::is_nothrow_copy_constructible_v< Iter > &&std::is_nothrow_copy_constructible_v< Pred >)=default
 
constexpr SkipWhileAdapter (SkipWhileAdapter &&) noexcept(std::is_nothrow_move_constructible_v< Iter > &&std::is_nothrow_move_constructible_v< Pred >)=default
 
constexpr ~SkipWhileAdapter () noexcept(std::is_nothrow_destructible_v< Iter > &&std::is_nothrow_destructible_v< Pred >)=default
 
constexpr SkipWhileAdapteroperator= (const SkipWhileAdapter &) noexcept(std::is_nothrow_copy_assignable_v< Iter > &&std::is_nothrow_copy_assignable_v< Pred >)=default
 
constexpr SkipWhileAdapteroperator= (SkipWhileAdapter &&) noexcept(std::is_nothrow_move_assignable_v< Iter > &&std::is_nothrow_move_assignable_v< Pred >)=default
 
constexpr SkipWhileAdapteroperator++ () noexcept(noexcept(++std::declval< Iter & >()))
 
constexpr SkipWhileAdapter operator++ (int) noexcept(std::is_nothrow_copy_constructible_v< SkipWhileAdapter > &&noexcept(++std::declval< SkipWhileAdapter & >()))
 
constexpr value_type operator* () const noexcept(noexcept(*std::declval< const Iter & >()))
 
constexpr bool operator== (const SkipWhileAdapter &other) const noexcept(noexcept(std::declval< const Iter & >()==std::declval< const Iter & >()))
 
constexpr bool operator!= (const SkipWhileAdapter &other) const noexcept(noexcept(std::declval< const SkipWhileAdapter & >()==std::declval< const SkipWhileAdapter & >()))
 
constexpr SkipWhileAdapter begin () const noexcept(std::is_nothrow_copy_constructible_v< SkipWhileAdapter >)
 
constexpr SkipWhileAdapter end () const noexcept(std::is_nothrow_constructible_v< SkipWhileAdapter, const Iter &, const Iter &, const Pred & >)
 

Detailed Description

template<typename Iter, typename Pred>
requires SkipWhileAdapterRequirements<Iter, Pred>
class helios::utils::SkipWhileAdapter< Iter, Pred >

Definition at line 1020 of file functional_adapters.hpp.

Member Typedef Documentation

◆ difference_type

template<typename Iter , typename Pred >
using helios::utils::SkipWhileAdapter< Iter, Pred >::difference_type = std::iter_difference_t<Iter>

◆ iterator_category

template<typename Iter , typename Pred >
using helios::utils::SkipWhileAdapter< Iter, Pred >::iterator_category = std::forward_iterator_tag

◆ pointer

template<typename Iter , typename Pred >
using helios::utils::SkipWhileAdapter< Iter, Pred >::pointer = value_type*

◆ reference

template<typename Iter , typename Pred >
using helios::utils::SkipWhileAdapter< Iter, Pred >::reference = value_type

◆ value_type

template<typename Iter , typename Pred >
using helios::utils::SkipWhileAdapter< Iter, Pred >::value_type = std::iter_value_t<Iter>

Constructor & Destructor Documentation

◆ SkipWhileAdapter() [1/3]

template<typename Iter , typename Pred >
constexpr helios::utils::SkipWhileAdapter< Iter, Pred >::SkipWhileAdapter ( Iter  begin,
Iter  end,
Pred  predicate 
)
inlineconstexprnoexcept

Constructs a skip-while adapter with the given iterator range and predicate.

Parameters
beginStart of the iterator range
endEnd of the iterator range
predicateFunction to test elements

Definition at line 1034 of file functional_adapters.hpp.

1038 : current_(std::move(begin)), end_(std::move(end)), predicate_(std::move(predicate)) {
1039 AdvancePastSkipped();
1040 }
constexpr SkipWhileAdapter end() const noexcept(std::is_nothrow_constructible_v< SkipWhileAdapter, const Iter &, const Iter &, const Pred & >)
constexpr SkipWhileAdapter begin() const noexcept(std::is_nothrow_copy_constructible_v< SkipWhileAdapter >)

◆ SkipWhileAdapter() [2/3]

template<typename Iter , typename Pred >
constexpr helios::utils::SkipWhileAdapter< Iter, Pred >::SkipWhileAdapter ( const SkipWhileAdapter< Iter, Pred > &  ) const &&
constexprdefaultnoexcept

◆ SkipWhileAdapter() [3/3]

template<typename Iter , typename Pred >
constexpr helios::utils::SkipWhileAdapter< Iter, Pred >::SkipWhileAdapter ( SkipWhileAdapter< Iter, Pred > &&  ) const &&
constexprdefaultnoexcept

◆ ~SkipWhileAdapter()

template<typename Iter , typename Pred >
constexpr helios::utils::SkipWhileAdapter< Iter, Pred >::~SkipWhileAdapter ( ) &&
constexprdefaultnoexcept

Member Function Documentation

◆ begin()

template<typename Iter , typename Pred >
constexpr SkipWhileAdapter helios::utils::SkipWhileAdapter< Iter, Pred >::begin ( ) const
inlineconstexprnoexcept

◆ end()

template<typename Iter , typename Pred >
constexpr SkipWhileAdapter helios::utils::SkipWhileAdapter< Iter, Pred >::end ( ) const
inlineconstexprnoexcept
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 1077 of file functional_adapters.hpp.

1078 {
1079 return {end_, end_, predicate_};
1080 }

◆ operator!=()

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

Definition at line 1067 of file functional_adapters.hpp.

1068 {
1069 return !(*this == other);
1070 }

◆ operator*()

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

◆ operator++() [1/2]

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

Definition at line 1094 of file functional_adapters.hpp.

1095 {
1096 ++current_;
1097 return *this;
1098}

◆ operator++() [2/2]

template<typename Iter , typename Pred >
requires SkipWhileAdapterRequirements<Iter, Pred>
constexpr auto helios::utils::SkipWhileAdapter< Iter, Pred >::operator++ ( int  )
constexprnoexcept

Definition at line 1102 of file functional_adapters.hpp.

1104 {
1105 auto temp = *this;
1106 ++(*this);
1107 return temp;
1108}

◆ operator=() [1/2]

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

◆ operator=() [2/2]

template<typename Iter , typename Pred >
constexpr SkipWhileAdapter & helios::utils::SkipWhileAdapter< Iter, Pred >::operator= ( SkipWhileAdapter< Iter, Pred > &&  ) &&
constexprdefaultnoexcept

◆ operator==()

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

Definition at line 1062 of file functional_adapters.hpp.

1063 {
1064 return current_ == other.current_;
1065 }