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

#include <functional_adapters.hpp>

Public Types

using iterator = Iter
 
using const_iterator = Iter
 
using value_type = std::iter_value_t< Iter >
 
using reference = decltype(*std::declval< Iter >())
 
using size_type = size_t
 

Public Member Functions

constexpr SlideView (Iter begin, size_t size) noexcept(std::is_nothrow_copy_constructible_v< Iter >)
 Constructs a SlideView.
 
constexpr SlideView (const SlideView &) noexcept(std::is_nothrow_copy_constructible_v< Iter >)=default
 
constexpr SlideView (SlideView &&) noexcept(std::is_nothrow_move_constructible_v< Iter >)=default
 
constexpr ~SlideView () noexcept=default
 
constexpr SlideViewoperator= (const SlideView &) noexcept(std::is_nothrow_copy_assignable_v< Iter >)=default
 
constexpr SlideViewoperator= (SlideView &&) noexcept(std::is_nothrow_move_assignable_v< Iter >)=default
 
constexpr auto Collect () const -> std::vector< value_type >
 Collects the window elements into a vector.
 
constexpr reference operator[] (size_t index) const noexcept(noexcept(*std::declval< Iter >()) &&noexcept(++std::declval< Iter & >()))
 Accesses an element by index.
 
constexpr bool operator== (const SlideView &other) const
 Compares two SlideViews for equality.
 
template<std::ranges::sized_range R>
constexpr bool operator== (const R &range) const
 Compares SlideView with a vector for equality.
 
constexpr bool Empty () const noexcept
 Checks if the window is empty.
 
constexpr size_t Size () const noexcept
 Returns the size of the window.
 
constexpr Iter begin () const noexcept(std::is_nothrow_copy_constructible_v< Iter >)
 Returns an iterator to the beginning.
 
constexpr Iter end () const noexcept(std::is_nothrow_copy_constructible_v< Iter > &&noexcept(++std::declval< Iter & >()))
 Returns an iterator to the end.
 

Detailed Description

template<IteratorLike Iter>
class helios::utils::SlideView< Iter >

Definition at line 1965 of file functional_adapters.hpp.

Member Typedef Documentation

◆ const_iterator

template<IteratorLike Iter>
using helios::utils::SlideView< Iter >::const_iterator = Iter

◆ iterator

◆ reference

template<IteratorLike Iter>
using helios::utils::SlideView< Iter >::reference = decltype(*std::declval<Iter>())

◆ size_type

template<IteratorLike Iter>
using helios::utils::SlideView< Iter >::size_type = size_t

◆ value_type

template<IteratorLike Iter>
using helios::utils::SlideView< Iter >::value_type = std::iter_value_t<Iter>

Constructor & Destructor Documentation

◆ SlideView() [1/3]

template<IteratorLike Iter>
constexpr helios::utils::SlideView< Iter >::SlideView ( Iter  begin,
size_t  size 
)
inlineconstexprnoexcept

Constructs a SlideView.

Parameters
beginIterator to the beginning of the window
sizeSize of the window

Definition at line 1978 of file functional_adapters.hpp.

1979 : begin_(begin), size_(size) {}
constexpr Iter begin() const noexcept(std::is_nothrow_copy_constructible_v< Iter >)
Returns an iterator to the beginning.

◆ SlideView() [2/3]

template<IteratorLike Iter>
constexpr helios::utils::SlideView< Iter >::SlideView ( const SlideView< Iter > &  ) const
constexprdefaultnoexcept

◆ SlideView() [3/3]

template<IteratorLike Iter>
constexpr helios::utils::SlideView< Iter >::SlideView ( SlideView< Iter > &&  ) const
constexprdefaultnoexcept

◆ ~SlideView()

template<IteratorLike Iter>
constexpr helios::utils::SlideView< Iter >::~SlideView ( )
constexprdefaultnoexcept

Member Function Documentation

◆ begin()

template<IteratorLike Iter>
constexpr Iter helios::utils::SlideView< Iter >::begin ( ) const
inlineconstexprnoexcept

Returns an iterator to the beginning.

Returns
Iterator to the first element
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 2037 of file functional_adapters.hpp.

2037{ return begin_; }

◆ Collect()

template<IteratorLike Iter>
requires std::copy_constructible<value_type>
constexpr auto helios::utils::SlideView< Iter >::Collect ( ) const -> std::vector<value_type>
constexpr

Collects the window elements into a vector.

Use when you need ownership of the elements.

Returns
Vector containing copies of the window elements
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 2052 of file functional_adapters.hpp.

2054{
2055 std::vector<value_type> result;
2056 result.reserve(size_);
2057 auto it = begin_;
2058 for (size_t i = 0; i < size_; ++i) {
2059 result.push_back(*it++);
2060 }
2061 return result;
2062}

◆ Empty()

template<IteratorLike Iter>
constexpr bool helios::utils::SlideView< Iter >::Empty ( ) const
inlineconstexprnoexcept

Checks if the window is empty.

Returns
True if the window has no elements
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 2025 of file functional_adapters.hpp.

2025{ return size_ == 0; }

◆ end()

template<IteratorLike Iter>
constexpr Iter helios::utils::SlideView< Iter >::end ( ) const
constexprnoexcept

Returns an iterator to the end.

Returns
Iterator past the last element
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 2101 of file functional_adapters.hpp.

2102 {
2103 auto it = begin_;
2104 for (size_t i = 0; i < size_; ++i) {
2105 ++it;
2106 }
2107 return it;
2108}

◆ operator=() [1/2]

template<IteratorLike Iter>
constexpr SlideView & helios::utils::SlideView< Iter >::operator= ( const SlideView< Iter > &  )
constexprdefaultnoexcept

◆ operator=() [2/2]

template<IteratorLike Iter>
constexpr SlideView & helios::utils::SlideView< Iter >::operator= ( SlideView< Iter > &&  )
constexprdefaultnoexcept

◆ operator==() [1/2]

template<IteratorLike Iter>
template<std::ranges::sized_range R>
constexpr bool helios::utils::SlideView< Iter >::operator== ( const R &  range) const
constexpr

Compares SlideView with a vector for equality.

Template Parameters
R
Parameters
vecVector to compare with
Returns
True if the view has the same elements as the vector

Definition at line 2092 of file functional_adapters.hpp.

2092 {
2093 if (size_ != std::ranges::size(range)) {
2094 return false;
2095 }
2096
2097 return std::equal(std::ranges::cbegin(range), std::ranges::cend(range), begin_);
2098}

◆ operator==() [2/2]

template<IteratorLike Iter>
constexpr bool helios::utils::SlideView< Iter >::operator== ( const SlideView< Iter > &  other) const
constexpr

Compares two SlideViews for equality.

Parameters
otherSlideView to compare with
Returns
True if both views have the same elements
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 2075 of file functional_adapters.hpp.

2075 {
2076 if (size_ != other.size_) {
2077 return false;
2078 }
2079
2080 auto it1 = begin_;
2081 auto it2 = other.begin_;
2082 for (size_t i = 0; i < size_; ++i) {
2083 if (*it1++ != *it2++) {
2084 return false;
2085 }
2086 }
2087 return true;
2088}

◆ operator[]()

template<IteratorLike Iter>
constexpr auto helios::utils::SlideView< Iter >::operator[] ( size_t  index) const
constexprnoexcept

Accesses an element by index.

Warning
Index must be less than size
Parameters
indexIndex of the element
Returns
Reference to the element
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 2065 of file functional_adapters.hpp.

2066 {
2067 auto it = begin_;
2068 for (size_t i = 0; i < index; ++i) {
2069 ++it;
2070 }
2071 return *it;
2072}

◆ Size()

template<IteratorLike Iter>
constexpr size_t helios::utils::SlideView< Iter >::Size ( ) const
inlineconstexprnoexcept

Returns the size of the window.

Returns
Number of elements in the window
Examples
/home/runner/work/HeliosEngine/HeliosEngine/src/core/include/helios/core/utils/functional_adapters.hpp.

Definition at line 2031 of file functional_adapters.hpp.

2031{ return size_; }