Pyrogenesis  trunk
Public Types | Public Member Functions | Private Attributes | List of all members
PS::span< T > Class Template Reference

Simplifed version of std::span (C++20) as we don't support the original one yet. More...

#include <Span.h>

Collaboration diagram for PS::span< T >:
Collaboration graph
[legend]

Public Types

using element_type = T
 
using value_type = std::remove_cv_t< T >
 
using size_type = size_t
 
using pointer = T *
 
using reference = T &
 
using iterator = pointer
 

Public Member Functions

constexpr span ()
 
constexpr span (iterator first, size_type extent)
 
constexpr span (iterator first, iterator last)
 
template<typename OtherT , size_t N>
constexpr span (const std::array< OtherT, N > &arr)
 
constexpr span (const span &other)=default
 
constexpr spanoperator= (const span &other)=default
 
 ~span ()=default
 
constexpr size_type size () const
 
constexpr bool empty () const
 
constexpr reference operator[] (size_type index) const
 
constexpr pointer data () const
 
constexpr iterator begin () const
 
constexpr iterator end () const
 
constexpr span subspan (size_type offset) const
 

Private Attributes

pointer m_Pointer
 
size_type m_Extent
 

Detailed Description

template<typename T>
class PS::span< T >

Simplifed version of std::span (C++20) as we don't support the original one yet.

The naming intentionally follows the STL version to make the future replacement easier with less blame changing. It supports only very basic subset of std::span functionality. TODO: remove as soon as std::span become available.

Member Typedef Documentation

◆ element_type

template<typename T>
using PS::span< T >::element_type = T

◆ iterator

template<typename T>
using PS::span< T >::iterator = pointer

◆ pointer

template<typename T>
using PS::span< T >::pointer = T*

◆ reference

template<typename T>
using PS::span< T >::reference = T&

◆ size_type

template<typename T>
using PS::span< T >::size_type = size_t

◆ value_type

template<typename T>
using PS::span< T >::value_type = std::remove_cv_t<T>

Constructor & Destructor Documentation

◆ span() [1/5]

template<typename T>
constexpr PS::span< T >::span ( )
inline

◆ span() [2/5]

template<typename T>
constexpr PS::span< T >::span ( iterator  first,
size_type  extent 
)
inline

◆ span() [3/5]

template<typename T>
constexpr PS::span< T >::span ( iterator  first,
iterator  last 
)
inline

◆ span() [4/5]

template<typename T>
template<typename OtherT , size_t N>
constexpr PS::span< T >::span ( const std::array< OtherT, N > &  arr)
inline

◆ span() [5/5]

template<typename T>
constexpr PS::span< T >::span ( const span< T > &  other)
default

◆ ~span()

template<typename T>
PS::span< T >::~span ( )
default

Member Function Documentation

◆ begin()

template<typename T>
constexpr iterator PS::span< T >::begin ( ) const
inline

◆ data()

template<typename T>
constexpr pointer PS::span< T >::data ( ) const
inline

◆ empty()

template<typename T>
constexpr bool PS::span< T >::empty ( ) const
inline

◆ end()

template<typename T>
constexpr iterator PS::span< T >::end ( ) const
inline

◆ operator=()

template<typename T>
constexpr span& PS::span< T >::operator= ( const span< T > &  other)
default

◆ operator[]()

template<typename T>
constexpr reference PS::span< T >::operator[] ( size_type  index) const
inline

◆ size()

template<typename T>
constexpr size_type PS::span< T >::size ( ) const
inline

◆ subspan()

template<typename T>
constexpr span PS::span< T >::subspan ( size_type  offset) const
inline

Member Data Documentation

◆ m_Extent

template<typename T>
size_type PS::span< T >::m_Extent
private

◆ m_Pointer

template<typename T>
pointer PS::span< T >::m_Pointer
private

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