Gaia-ECS v0.9.3
A simple and powerful entity component system
Loading...
Searching...
No Matches
gaia::core::span< T, Extent > Class Template Reference

Public Types

using element_kind = T
 
using value_type = typename std::remove_cv< T >::type
 
using size_type = span_size_type
 
using difference_type = span_diff_type
 
using pointer = element_kind *
 
using const_pointer = const element_kind *
 
using reference = element_kind &
 
using const_reference = const element_kind &
 
using iterator = pointer
 
using const_iterator = const_pointer
 
using iterator_type = core::random_access_iterator_tag
 
template<span_size_type Offset, span_size_type Count = DynamicSpanExtent>
using subspan_return_t = span< T, Count !=DynamicSpanExtent ? Count :(Extent !=DynamicSpanExtent ? Extent - Offset :DynamicSpanExtent)>
 

Public Member Functions

constexpr span (pointer ptr, size_type count)
 
constexpr span (pointer begin, pointer end)
 
template<span_size_type N, span_size_type E = Extent, typename std::enable_if<(E==DynamicSpanExtent||N==E) &&detail::is_container_element_kind_compatible< element_kind(&)[N], T >::value, int >::type = 0>
constexpr span (element_kind(&arr)[N]) noexcept
 
template<typename Container , span_size_type E = Extent, typename std::enable_if< E==DynamicSpanExtent &&detail::is_container< Container >::value &&detail::is_container_element_kind_compatible< Container &, T >::value, int >::type = 0>
constexpr span (Container &cont)
 
template<typename Container , span_size_type E = Extent, typename std::enable_if< E==DynamicSpanExtent &&detail::is_container< Container >::value &&detail::is_container_element_kind_compatible< const Container &, T >::value, int >::type = 0>
constexpr span (const Container &cont)
 
constexpr span (const span &other) noexcept=default
 
constexpr spanoperator= (const span &other) noexcept=default
 
template<typename T2 , span_size_type Extent2, typename std::enable_if<(Extent==DynamicSpanExtent||Extent2==DynamicSpanExtent||Extent==Extent2) &&std::is_convertible< T2(*)[], T(*)[]>::value, int >::type = 0>
constexpr span (const span< T2, Extent2 > &other) noexcept
 
GAIA_NODISCARD constexpr pointer data () const noexcept
 
GAIA_NODISCARD constexpr size_type size () const noexcept
 
GAIA_NODISCARD constexpr bool empty () const noexcept
 
GAIA_NODISCARD constexpr reference operator[] (size_type index) const
 
GAIA_NODISCARD constexpr iterator begin () noexcept
 
GAIA_NODISCARD constexpr iterator begin () const noexcept
 
GAIA_NODISCARD constexpr const_iterator cbegin () const noexcept
 
GAIA_NODISCARD constexpr iterator end () noexcept
 
GAIA_NODISCARD constexpr const_iterator end () const noexcept
 
GAIA_NODISCARD constexpr const_iterator cend () const noexcept
 
template<span_size_type Count>
GAIA_NODISCARD constexpr span< element_kind, Count > first () const
 
GAIA_NODISCARD constexpr span< element_kind, DynamicSpanExtent > first (size_type count) const
 
template<span_size_type Count>
GAIA_NODISCARD constexpr span< element_kind, Count > last () const
 
GAIA_NODISCARD constexpr span< element_kind, DynamicSpanExtent > last (size_type count) const
 
GAIA_NODISCARD constexpr reference front () const
 
GAIA_NODISCARD constexpr reference back () const
 
template<span_size_type Offset, span_size_type Count = DynamicSpanExtent>
GAIA_NODISCARD constexpr subspan_return_t< Offset, Count > subspan () const
 
GAIA_NODISCARD constexpr span< element_kind, DynamicSpanExtent > subspan (size_type offset, size_type count=DynamicSpanExtent) const
 

Static Public Attributes

static constexpr size_type extent = Extent
 

The documentation for this class was generated from the following file: