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

#include <functional_adapters.hpp>

Inheritance diagram for helios::utils::TakeWhileAdapter< Iter, Pred >:
helios::utils::FunctionalAdapterBase< TakeWhileAdapter< 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 TakeWhileAdapter (Iter begin, Iter end, Pred predicate) noexcept(std::is_nothrow_move_constructible_v< Iter > &&std::is_nothrow_copy_constructible_v< Iter > &&std::is_nothrow_move_constructible_v< Pred > &&noexcept(CheckPredicate()))
 Constructs a take-while adapter with the given iterator range and predicate.
 
constexpr TakeWhileAdapter (const TakeWhileAdapter &) noexcept(std::is_nothrow_copy_constructible_v< Iter > &&std::is_nothrow_copy_constructible_v< Pred >)=default
 
constexpr TakeWhileAdapter (TakeWhileAdapter &&) noexcept(std::is_nothrow_move_constructible_v< Iter > &&std::is_nothrow_move_constructible_v< Pred >)=default
 
constexpr ~TakeWhileAdapter () noexcept(std::is_nothrow_destructible_v< Iter > &&std::is_nothrow_destructible_v< Pred >)=default
 
constexpr TakeWhileAdapteroperator= (const TakeWhileAdapter &) noexcept(std::is_nothrow_copy_assignable_v< Iter > &&std::is_nothrow_copy_assignable_v< Pred >)=default
 
constexpr TakeWhileAdapteroperator= (TakeWhileAdapter &&) noexcept(std::is_nothrow_move_assignable_v< Iter > &&std::is_nothrow_move_assignable_v< Pred >)=default
 
constexpr TakeWhileAdapteroperator++ () noexcept(noexcept(++std::declval< Iter & >()) &&noexcept(std::declval< Iter & >() !=std::declval< Iter & >()) &&noexcept(CheckPredicate()))
 
constexpr TakeWhileAdapter operator++ (int) noexcept(std::is_nothrow_copy_constructible_v< TakeWhileAdapter > &&noexcept(++std::declval< TakeWhileAdapter & >()))
 
constexpr value_type operator* () const noexcept(noexcept(*std::declval< const Iter & >()))
 
constexpr bool operator== (const TakeWhileAdapter &other) const noexcept(noexcept(std::declval< const Iter & >()==std::declval< const Iter & >()))
 
constexpr bool operator!= (const TakeWhileAdapter &other) const noexcept(noexcept(std::declval< const TakeWhileAdapter & >()==std::declval< const TakeWhileAdapter & >()))
 
constexpr bool IsAtEnd () const noexcept(noexcept(std::declval< const Iter & >()==std::declval< const Iter & >()))
 Checks if the iterator has reached the end.
 
constexpr TakeWhileAdapter begin () const noexcept(std::is_nothrow_copy_constructible_v< TakeWhileAdapter >)
 
constexpr TakeWhileAdapter end () const noexcept(std::is_nothrow_copy_constructible_v< TakeWhileAdapter >)
 

Detailed Description

template<typename Iter, typename Pred>
requires TakeWhileAdapterRequirements<Iter, Pred>
class helios::utils::TakeWhileAdapter< Iter, Pred >

Definition at line 870 of file functional_adapters.hpp.

Member Typedef Documentation

◆ difference_type

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

◆ iterator_category

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

◆ pointer

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

◆ reference

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

◆ value_type

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

Constructor & Destructor Documentation

◆ TakeWhileAdapter() [1/3]

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

Constructs a take-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 884 of file functional_adapters.hpp.

889 : begin_(std::move(begin)), current_(begin_), end_(std::move(end)), predicate_(std::move(predicate)) {
890 CheckPredicate();
891 }
constexpr TakeWhileAdapter end() const noexcept(std::is_nothrow_copy_constructible_v< TakeWhileAdapter >)
constexpr TakeWhileAdapter begin() const noexcept(std::is_nothrow_copy_constructible_v< TakeWhileAdapter >)

◆ TakeWhileAdapter() [2/3]

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

◆ TakeWhileAdapter() [3/3]

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

◆ ~TakeWhileAdapter()

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

Member Function Documentation

◆ begin()

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

◆ end()

template<typename Iter , typename Pred >
requires TakeWhileAdapterRequirements<Iter, Pred>
constexpr auto helios::utils::TakeWhileAdapter< Iter, Pred >::end ( ) const
constexprnoexcept
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 978 of file functional_adapters.hpp.

979 {
980 auto end_iter = *this;
981 end_iter.stopped_ = true;
982 return end_iter;
983}

◆ IsAtEnd()

template<typename Iter , typename Pred >
constexpr bool helios::utils::TakeWhileAdapter< Iter, Pred >::IsAtEnd ( ) const
inlineconstexprnoexcept

Checks if the iterator has reached the end.

Returns
True if at end, false otherwise
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 929 of file functional_adapters.hpp.

930 {
931 return stopped_ || current_ == end_;
932 }

◆ operator!=()

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

◆ operator*()

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

◆ operator++() [1/2]

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

Definition at line 955 of file functional_adapters.hpp.

958 {
959 if (!stopped_ && current_ != end_) {
960 ++current_;
961 CheckPredicate();
962 }
963 return *this;
964}

◆ operator++() [2/2]

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

Definition at line 968 of file functional_adapters.hpp.

970 {
971 auto temp = *this;
972 ++(*this);
973 return temp;
974}

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ operator==()

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

Definition at line 915 of file functional_adapters.hpp.

916 {
917 return (stopped_ && other.stopped_) || (current_ == other.current_ && stopped_ == other.stopped_);
918 }