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

#include <functional_adapters.hpp>

Inheritance diagram for helios::utils::StepByAdapter< Iter >:
helios::utils::FunctionalAdapterBase< StepByAdapter< 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 StepByAdapter (Iter begin, Iter end, size_t step) noexcept(std::is_nothrow_move_constructible_v< Iter > &&std::is_nothrow_copy_constructible_v< Iter >)
 Constructs a step-by adapter with the given iterator range and step size.
 
constexpr StepByAdapter (const StepByAdapter &)=default
 
constexpr StepByAdapter (StepByAdapter &&)=default
 
constexpr ~StepByAdapter ()=default
 
constexpr StepByAdapteroperator= (const StepByAdapter &)=default
 
constexpr StepByAdapteroperator= (StepByAdapter &&)=default
 
constexpr StepByAdapteroperator++ () noexcept(noexcept(++std::declval< Iter & >()) &&noexcept(std::declval< Iter & >() !=std::declval< Iter & >()))
 
constexpr StepByAdapter operator++ (int) noexcept(std::is_copy_constructible_v< StepByAdapter > &&noexcept(++std::declval< StepByAdapter & >()))
 
constexpr value_type operator* () const noexcept(noexcept(*std::declval< const Iter & >()))
 
constexpr bool operator== (const StepByAdapter &other) const noexcept(noexcept(std::declval< const Iter & >()==std::declval< const Iter & >()))
 
constexpr bool operator!= (const StepByAdapter &other) const noexcept(noexcept(std::declval< const StepByAdapter & >()==std::declval< const StepByAdapter & >()))
 
constexpr StepByAdapter begin () const noexcept(std::is_nothrow_copy_constructible_v< StepByAdapter >)
 
constexpr StepByAdapter end () const noexcept(std::is_nothrow_constructible_v< StepByAdapter, const Iter &, const Iter &, size_t >)
 

Detailed Description

template<typename Iter>
requires StepByAdapterRequirements<Iter>
class helios::utils::StepByAdapter< Iter >

Definition at line 1367 of file functional_adapters.hpp.

Member Typedef Documentation

◆ difference_type

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

◆ iterator_category

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

◆ pointer

◆ reference

◆ value_type

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

Constructor & Destructor Documentation

◆ StepByAdapter() [1/3]

template<typename Iter >
constexpr helios::utils::StepByAdapter< Iter >::StepByAdapter ( Iter  begin,
Iter  end,
size_t  step 
)
inlineconstexprnoexcept

Constructs a step-by adapter with the given iterator range and step size.

Parameters
beginStart of the iterator range
endEnd of the iterator range
stepNumber of elements to step by

Definition at line 1381 of file functional_adapters.hpp.

1383 : begin_(std::move(begin)), current_(begin_), end_(std::move(end)), step_(step > 0 ? step : 1) {}
constexpr StepByAdapter end() const noexcept(std::is_nothrow_constructible_v< StepByAdapter, const Iter &, const Iter &, size_t >)
constexpr StepByAdapter begin() const noexcept(std::is_nothrow_copy_constructible_v< StepByAdapter >)

◆ StepByAdapter() [2/3]

template<typename Iter >
constexpr helios::utils::StepByAdapter< Iter >::StepByAdapter ( const StepByAdapter< Iter > &  )
constexprdefault

◆ StepByAdapter() [3/3]

template<typename Iter >
constexpr helios::utils::StepByAdapter< Iter >::StepByAdapter ( StepByAdapter< Iter > &&  )
constexprdefault

◆ ~StepByAdapter()

Member Function Documentation

◆ begin()

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

◆ end()

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

Definition at line 1415 of file functional_adapters.hpp.

1416 {
1417 return {end_, end_, step_};
1418 }

◆ operator!=()

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

Definition at line 1406 of file functional_adapters.hpp.

1407 {
1408 return !(*this == other);
1409 }

◆ operator*()

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

◆ operator++() [1/2]

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

Definition at line 1429 of file functional_adapters.hpp.

1431 {
1432 for (size_t i = 0; i < step_ && current_ != end_; ++i) {
1433 ++current_;
1434 }
1435 return *this;
1436}

◆ operator++() [2/2]

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

Definition at line 1440 of file functional_adapters.hpp.

1442 {
1443 auto temp = *this;
1444 ++(*this);
1445 return temp;
1446}

◆ operator=() [1/2]

template<typename Iter >
constexpr StepByAdapter & helios::utils::StepByAdapter< Iter >::operator= ( const StepByAdapter< Iter > &  )
constexprdefault

◆ operator=() [2/2]

template<typename Iter >
constexpr StepByAdapter & helios::utils::StepByAdapter< Iter >::operator= ( StepByAdapter< Iter > &&  )
constexprdefault

◆ operator==()

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

Definition at line 1401 of file functional_adapters.hpp.

1402 {
1403 return current_ == other.current_;
1404 }