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

#include <functional_adapters.hpp>

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

Detailed Description

template<typename Iter, typename Pred>
requires FilterAdapterRequirements<Iter, Pred>
class helios::utils::FilterAdapter< Iter, Pred >

Definition at line 385 of file functional_adapters.hpp.

Member Typedef Documentation

◆ difference_type

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

◆ iterator_category

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

◆ pointer

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

◆ reference

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

◆ value_type

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

Constructor & Destructor Documentation

◆ FilterAdapter() [1/3]

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

Constructs a filter adapter with the given iterator range and predicate.

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

Definition at line 399 of file functional_adapters.hpp.

403 : begin_(std::move(begin)), current_(begin_), end_(std::move(end)), predicate_(std::move(predicate)) {
404 AdvanceToValid();
405 }
constexpr FilterAdapter end() const noexcept(std::is_nothrow_constructible_v< FilterAdapter, const Iter &, const Iter &, const Pred & >)
constexpr FilterAdapter begin() const noexcept(std::is_nothrow_copy_constructible_v< FilterAdapter >)

◆ FilterAdapter() [2/3]

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

◆ FilterAdapter() [3/3]

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

◆ ~FilterAdapter()

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

Member Function Documentation

◆ begin()

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

◆ end()

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

Definition at line 450 of file functional_adapters.hpp.

451 {
452 return {end_, end_, predicate_};
453 }

◆ IsAtEnd()

template<typename Iter , typename Pred >
constexpr bool helios::utils::FilterAdapter< 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 441 of file functional_adapters.hpp.

442 {
443 return current_ == end_;
444 }

◆ operator!=()

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

◆ operator*()

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

◆ operator++() [1/2]

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

Definition at line 468 of file functional_adapters.hpp.

469 {
470 ++current_;
471 AdvanceToValid();
472 return *this;
473}

◆ operator++() [2/2]

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

Definition at line 477 of file functional_adapters.hpp.

479 {
480 auto temp = *this;
481 ++(*this);
482 return temp;
483}

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ operator==()

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

Definition at line 427 of file functional_adapters.hpp.

428 {
429 return current_ == other.current_;
430 }