Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
Loading...
Searching...
No Matches
utility_module::span< T, Extent > Class Template Reference

A fallback span implementation for C++17 and earlier compilers. More...

#include <span.h>

Collaboration diagram for utility_module::span< T, Extent >:
Collaboration graph

Public Types

using element_type = T
 
using value_type = std::remove_cv_t<T>
 
using size_type = size_t
 
using difference_type = ptrdiff_t
 
using pointer = T*
 
using const_pointer = const T*
 
using reference = T&
 
using const_reference = const T&
 
using iterator = pointer
 
using const_iterator = const_pointer
 
using reverse_iterator = std::reverse_iterator<iterator>
 
using const_reverse_iterator = std::reverse_iterator<const_iterator>
 

Public Member Functions

constexpr span () noexcept
 
constexpr span (pointer ptr, size_type count) noexcept
 
constexpr span (pointer first, pointer last) noexcept
 
template<size_t N>
constexpr span (std::array< value_type, N > &arr) noexcept
 
template<size_t N>
constexpr span (const std::array< value_type, N > &arr) noexcept
 
template<typename Allocator >
constexpr span (std::vector< value_type, Allocator > &vec) noexcept
 
template<typename Allocator >
constexpr span (const std::vector< value_type, Allocator > &vec) noexcept
 
template<size_t N>
constexpr span (element_type(&arr)[N]) noexcept
 
constexpr spanoperator= (const span &other) noexcept=default
 
constexpr size_type size () const noexcept
 
constexpr size_type size_bytes () const noexcept
 
constexpr bool empty () const noexcept
 
constexpr reference operator[] (size_type idx) const noexcept
 
constexpr reference front () const noexcept
 
constexpr reference back () const noexcept
 
constexpr pointer data () const noexcept
 
constexpr iterator begin () const noexcept
 
constexpr iterator end () const noexcept
 
constexpr const_iterator cbegin () const noexcept
 
constexpr const_iterator cend () const noexcept
 
constexpr reverse_iterator rbegin () const noexcept
 
constexpr reverse_iterator rend () const noexcept
 
constexpr const_reverse_iterator crbegin () const noexcept
 
constexpr const_reverse_iterator crend () const noexcept
 
template<size_t Count>
constexpr span< element_type, Count > first () const noexcept
 
constexpr span< element_type, dynamic_extent > first (size_type count) const noexcept
 
template<size_t Count>
constexpr span< element_type, Count > last () const noexcept
 
constexpr span< element_type, dynamic_extent > last (size_type count) const noexcept
 
template<size_t Offset, size_t Count = dynamic_extent>
constexpr auto subspan () const noexcept
 
constexpr span< element_type, dynamic_extent > subspan (size_type offset, size_type count=dynamic_extent) const noexcept
 
constexpr span () noexcept
 
constexpr span (pointer ptr, size_type count) noexcept
 
constexpr span (pointer first, pointer last) noexcept
 
template<size_t N>
constexpr span (std::array< value_type, N > &arr) noexcept
 
template<size_t N>
constexpr span (const std::array< value_type, N > &arr) noexcept
 
template<typename Allocator >
constexpr span (std::vector< value_type, Allocator > &vec) noexcept
 
template<typename Allocator >
constexpr span (const std::vector< value_type, Allocator > &vec) noexcept
 
template<size_t N>
constexpr span (element_type(&arr)[N]) noexcept
 
constexpr spanoperator= (const span &other) noexcept=default
 
constexpr size_type size () const noexcept
 
constexpr size_type size_bytes () const noexcept
 
constexpr bool empty () const noexcept
 
constexpr reference operator[] (size_type idx) const noexcept
 
constexpr reference front () const noexcept
 
constexpr reference back () const noexcept
 
constexpr pointer data () const noexcept
 
constexpr iterator begin () const noexcept
 
constexpr iterator end () const noexcept
 
constexpr const_iterator cbegin () const noexcept
 
constexpr const_iterator cend () const noexcept
 
constexpr reverse_iterator rbegin () const noexcept
 
constexpr reverse_iterator rend () const noexcept
 
constexpr const_reverse_iterator crbegin () const noexcept
 
constexpr const_reverse_iterator crend () const noexcept
 
template<size_t Count>
constexpr span< element_type, Count > first () const noexcept
 
constexpr span< element_type, dynamic_extent > first (size_type count) const noexcept
 
template<size_t Count>
constexpr span< element_type, Count > last () const noexcept
 
constexpr span< element_type, dynamic_extent > last (size_type count) const noexcept
 
template<size_t Offset, size_t Count = dynamic_extent>
constexpr auto subspan () const noexcept
 
constexpr span< element_type, dynamic_extent > subspan (size_type offset, size_type count=dynamic_extent) const noexcept
 

Static Public Attributes

static constexpr size_t dynamic_extent = size_t(-1)
 

Private Attributes

pointer data_
 
size_type size_
 

Detailed Description

template<typename T, size_t Extent = size_t(-1)>
class utility_module::span< T, Extent >

A fallback span implementation for C++17 and earlier compilers.

Provides a view over a contiguous sequence of objects, similar to C++20's std::span. This implementation offers a compatible subset of the std::span interface.

Template Parameters
TThe type of elements in the span.
ExtentThe extent (size) of the span, or dynamic_extent if determined at runtime.

Definition at line 45 of file span.h.

Member Typedef Documentation

◆ const_iterator

template<typename T , size_t Extent = size_t(-1)>
typedef const_pointer kcenon::thread::utils::span::const_iterator = const_pointer

Definition at line 52 of file span.h.

◆ const_pointer

template<typename T , size_t Extent = size_t(-1)>
typedef const T * kcenon::thread::utils::span::const_pointer = const T*

Definition at line 48 of file span.h.

◆ const_reference

template<typename T , size_t Extent = size_t(-1)>
typedef const T & kcenon::thread::utils::span::const_reference = const T&

Definition at line 50 of file span.h.

◆ const_reverse_iterator

template<typename T , size_t Extent = size_t(-1)>
typedef std::reverse_iterator< const_iterator > kcenon::thread::utils::span::const_reverse_iterator = std::reverse_iterator<const_iterator>

Definition at line 54 of file span.h.

◆ difference_type

template<typename T , size_t Extent = size_t(-1)>
typedef ptrdiff_t kcenon::thread::utils::span::difference_type = ptrdiff_t

Definition at line 46 of file span.h.

◆ element_type

template<typename T , size_t Extent = size_t(-1)>
typedef T kcenon::thread::utils::span::element_type = T

Definition at line 43 of file span.h.

◆ iterator

template<typename T , size_t Extent = size_t(-1)>
typedef pointer kcenon::thread::utils::span::iterator = pointer

Definition at line 51 of file span.h.

◆ pointer

template<typename T , size_t Extent = size_t(-1)>
typedef T * kcenon::thread::utils::span::pointer = T*

Definition at line 47 of file span.h.

◆ reference

template<typename T , size_t Extent = size_t(-1)>
typedef T & kcenon::thread::utils::span::reference = T&

Definition at line 49 of file span.h.

◆ reverse_iterator

template<typename T , size_t Extent = size_t(-1)>
typedef std::reverse_iterator< iterator > kcenon::thread::utils::span::reverse_iterator = std::reverse_iterator<iterator>

Definition at line 53 of file span.h.

◆ size_type

template<typename T , size_t Extent = size_t(-1)>
typedef size_t kcenon::thread::utils::span::size_type = size_t

Definition at line 45 of file span.h.

◆ value_type

template<typename T , size_t Extent = size_t(-1)>
typedef std::remove_cv_t< T > kcenon::thread::utils::span::value_type = std::remove_cv_t<T>

Definition at line 44 of file span.h.

Constructor & Destructor Documentation

◆ span() [1/16]

template<typename T , size_t Extent = size_t(-1)>
utility_module::span< T, Extent >::span ( )
inlineconstexprnoexcept

Definition at line 60 of file span.h.

60 : data_(nullptr), size_(0)
61 {
62 static_assert(Extent == dynamic_extent || Extent == 0,
63 "Default-constructed span must have dynamic extent or zero extent");
64 }
static constexpr size_t dynamic_extent
Definition span.h:57
size_type size_
Definition span.h:199

◆ span() [2/16]

template<typename T , size_t Extent = size_t(-1)>
utility_module::span< T, Extent >::span ( pointer ptr,
size_type count )
inlineconstexprnoexcept

Definition at line 66 of file span.h.

66 : data_(ptr), size_(count)
67 {
68 static_assert(Extent == dynamic_extent || Extent == count,
69 "Size mismatch in span construction");
70 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [3/16]

template<typename T , size_t Extent = size_t(-1)>
utility_module::span< T, Extent >::span ( pointer first,
pointer last )
inlineconstexprnoexcept

Definition at line 72 of file span.h.

72 : data_(first), size_(last - first)
73 {
74 static_assert(Extent == dynamic_extent || Extent == size_,
75 "Size mismatch in span construction");
76 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [4/16]

template<typename T , size_t Extent = size_t(-1)>
template<size_t N>
utility_module::span< T, Extent >::span ( std::array< value_type, N > & arr)
inlineconstexprnoexcept

Definition at line 80 of file span.h.

81 : data_(arr.data()), size_(N)
82 {
83 static_assert(Extent == dynamic_extent || Extent == N,
84 "Size mismatch in span construction from array");
85 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [5/16]

template<typename T , size_t Extent = size_t(-1)>
template<size_t N>
utility_module::span< T, Extent >::span ( const std::array< value_type, N > & arr)
inlineconstexprnoexcept

Definition at line 88 of file span.h.

89 : data_(arr.data()), size_(N)
90 {
91 static_assert(Extent == dynamic_extent || Extent == N,
92 "Size mismatch in span construction from const array");
93 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [6/16]

template<typename T , size_t Extent = size_t(-1)>
template<typename Allocator >
utility_module::span< T, Extent >::span ( std::vector< value_type, Allocator > & vec)
inlineconstexprnoexcept

Definition at line 97 of file span.h.

98 : data_(vec.data()), size_(vec.size())
99 {
100 static_assert(Extent == dynamic_extent || Extent == 0,
101 "Non-dynamic extent not supported for std::vector constructor");
102 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [7/16]

template<typename T , size_t Extent = size_t(-1)>
template<typename Allocator >
utility_module::span< T, Extent >::span ( const std::vector< value_type, Allocator > & vec)
inlineconstexprnoexcept

Definition at line 105 of file span.h.

106 : data_(vec.data()), size_(vec.size())
107 {
108 static_assert(Extent == dynamic_extent || Extent == 0,
109 "Non-dynamic extent not supported for std::vector constructor");
110 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [8/16]

template<typename T , size_t Extent = size_t(-1)>
template<size_t N>
utility_module::span< T, Extent >::span ( element_type(&) arr[N])
inlineconstexprnoexcept

Definition at line 114 of file span.h.

115 : data_(arr), size_(N)
116 {
117 static_assert(Extent == dynamic_extent || Extent == N,
118 "Size mismatch in span construction from array");
119 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [9/16]

template<typename T , size_t Extent = size_t(-1)>
utility_module::span< T, Extent >::span ( )
inlineconstexprnoexcept

Definition at line 66 of file span.h.

66 : data_(nullptr), size_(0)
67 {
68 static_assert(Extent == dynamic_extent || Extent == 0,
69 "Default-constructed span must have dynamic extent or zero extent");
70 }

◆ span() [10/16]

template<typename T , size_t Extent = size_t(-1)>
utility_module::span< T, Extent >::span ( pointer ptr,
size_type count )
inlineconstexprnoexcept

Definition at line 72 of file span.h.

72 : data_(ptr), size_(count)
73 {
74 static_assert(Extent == dynamic_extent || Extent == count,
75 "Size mismatch in span construction");
76 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [11/16]

template<typename T , size_t Extent = size_t(-1)>
utility_module::span< T, Extent >::span ( pointer first,
pointer last )
inlineconstexprnoexcept

Definition at line 78 of file span.h.

78 : data_(first), size_(last - first)
79 {
80 static_assert(Extent == dynamic_extent || Extent == size_,
81 "Size mismatch in span construction");
82 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [12/16]

template<typename T , size_t Extent = size_t(-1)>
template<size_t N>
utility_module::span< T, Extent >::span ( std::array< value_type, N > & arr)
inlineconstexprnoexcept

Definition at line 86 of file span.h.

87 : data_(arr.data()), size_(N)
88 {
89 static_assert(Extent == dynamic_extent || Extent == N,
90 "Size mismatch in span construction from array");
91 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [13/16]

template<typename T , size_t Extent = size_t(-1)>
template<size_t N>
utility_module::span< T, Extent >::span ( const std::array< value_type, N > & arr)
inlineconstexprnoexcept

Definition at line 94 of file span.h.

95 : data_(arr.data()), size_(N)
96 {
97 static_assert(Extent == dynamic_extent || Extent == N,
98 "Size mismatch in span construction from const array");
99 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [14/16]

template<typename T , size_t Extent = size_t(-1)>
template<typename Allocator >
utility_module::span< T, Extent >::span ( std::vector< value_type, Allocator > & vec)
inlineconstexprnoexcept

Definition at line 103 of file span.h.

104 : data_(vec.data()), size_(vec.size())
105 {
106 static_assert(Extent == dynamic_extent || Extent == 0,
107 "Non-dynamic extent not supported for std::vector constructor");
108 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [15/16]

template<typename T , size_t Extent = size_t(-1)>
template<typename Allocator >
utility_module::span< T, Extent >::span ( const std::vector< value_type, Allocator > & vec)
inlineconstexprnoexcept

Definition at line 111 of file span.h.

112 : data_(vec.data()), size_(vec.size())
113 {
114 static_assert(Extent == dynamic_extent || Extent == 0,
115 "Non-dynamic extent not supported for std::vector constructor");
116 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ span() [16/16]

template<typename T , size_t Extent = size_t(-1)>
template<size_t N>
utility_module::span< T, Extent >::span ( element_type(&) arr[N])
inlineconstexprnoexcept

Definition at line 120 of file span.h.

121 : data_(arr), size_(N)
122 {
123 static_assert(Extent == dynamic_extent || Extent == N,
124 "Size mismatch in span construction from array");
125 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

Member Function Documentation

◆ back() [1/2]

template<typename T , size_t Extent = size_t(-1)>
reference utility_module::span< T, Extent >::back ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 146 of file span.h.

147 {
148 return data_[size_ - 1];
149 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ back() [2/2]

template<typename T , size_t Extent = size_t(-1)>
reference utility_module::span< T, Extent >::back ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 140 of file span.h.

141 {
142 return data_[size_ - 1];
143 }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ begin() [1/2]

template<typename T , size_t Extent = size_t(-1)>
iterator utility_module::span< T, Extent >::begin ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 154 of file span.h.

154{ return data_; }

References utility_module::span< T, Extent >::data_.

◆ begin() [2/2]

template<typename T , size_t Extent = size_t(-1)>
iterator utility_module::span< T, Extent >::begin ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 148 of file span.h.

148{ return data_; }

References utility_module::span< T, Extent >::data_.

Referenced by utility_module::span< T, Extent >::rend().

Here is the caller graph for this function:

◆ cbegin() [1/2]

template<typename T , size_t Extent = size_t(-1)>
const_iterator utility_module::span< T, Extent >::cbegin ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 156 of file span.h.

156{ return data_; }

References utility_module::span< T, Extent >::data_.

◆ cbegin() [2/2]

template<typename T , size_t Extent = size_t(-1)>
const_iterator utility_module::span< T, Extent >::cbegin ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 150 of file span.h.

150{ return data_; }

References utility_module::span< T, Extent >::data_.

Referenced by utility_module::span< T, Extent >::crend().

Here is the caller graph for this function:

◆ cend() [1/2]

template<typename T , size_t Extent = size_t(-1)>
const_iterator utility_module::span< T, Extent >::cend ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 157 of file span.h.

157{ return data_ + size_; }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ cend() [2/2]

template<typename T , size_t Extent = size_t(-1)>
const_iterator utility_module::span< T, Extent >::cend ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 151 of file span.h.

151{ return data_ + size_; }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

Referenced by utility_module::span< T, Extent >::crbegin().

Here is the caller graph for this function:

◆ crbegin() [1/2]

template<typename T , size_t Extent = size_t(-1)>
const_reverse_iterator utility_module::span< T, Extent >::crbegin ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 160 of file span.h.

160{ return const_reverse_iterator(cend()); }
constexpr const_iterator cend() const noexcept
Definition span.h:151
std::reverse_iterator< const_iterator > const_reverse_iterator
Definition span.h:54

References utility_module::span< T, Extent >::cend().

Here is the call graph for this function:

◆ crbegin() [2/2]

template<typename T , size_t Extent = size_t(-1)>
const_reverse_iterator utility_module::span< T, Extent >::crbegin ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 154 of file span.h.

154{ return const_reverse_iterator(cend()); }

References utility_module::span< T, Extent >::cend().

Here is the call graph for this function:

◆ crend() [1/2]

template<typename T , size_t Extent = size_t(-1)>
const_reverse_iterator utility_module::span< T, Extent >::crend ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 161 of file span.h.

161{ return const_reverse_iterator(cbegin()); }
constexpr const_iterator cbegin() const noexcept
Definition span.h:150

References utility_module::span< T, Extent >::cbegin().

Here is the call graph for this function:

◆ crend() [2/2]

template<typename T , size_t Extent = size_t(-1)>
const_reverse_iterator utility_module::span< T, Extent >::crend ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 155 of file span.h.

155{ return const_reverse_iterator(cbegin()); }

References utility_module::span< T, Extent >::cbegin().

Here is the call graph for this function:

◆ data() [1/2]

template<typename T , size_t Extent = size_t(-1)>
pointer utility_module::span< T, Extent >::data ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 151 of file span.h.

151{ return data_; }

References utility_module::span< T, Extent >::data_.

◆ data() [2/2]

template<typename T , size_t Extent = size_t(-1)>
pointer utility_module::span< T, Extent >::data ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 145 of file span.h.

145{ return data_; }

References utility_module::span< T, Extent >::data_.

◆ empty() [1/2]

template<typename T , size_t Extent = size_t(-1)>
bool utility_module::span< T, Extent >::empty ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 133 of file span.h.

133{ return size_ == 0; }

References utility_module::span< T, Extent >::size_.

◆ empty() [2/2]

template<typename T , size_t Extent = size_t(-1)>
bool utility_module::span< T, Extent >::empty ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 127 of file span.h.

127{ return size_ == 0; }

References utility_module::span< T, Extent >::size_.

◆ end() [1/2]

template<typename T , size_t Extent = size_t(-1)>
iterator utility_module::span< T, Extent >::end ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 155 of file span.h.

155{ return data_ + size_; }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

◆ end() [2/2]

template<typename T , size_t Extent = size_t(-1)>
iterator utility_module::span< T, Extent >::end ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 149 of file span.h.

149{ return data_ + size_; }

References utility_module::span< T, Extent >::data_, and utility_module::span< T, Extent >::size_.

Referenced by utility_module::span< T, Extent >::rbegin().

Here is the caller graph for this function:

◆ first() [1/4]

template<typename T , size_t Extent = size_t(-1)>
template<size_t Count>
span< element_type, Count > utility_module::span< T, Extent >::first ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 165 of file span.h.

166 {
167 return span<element_type, Count>(data_, Count);
168 }
span(T(&)[N]) -> span< T, N >

References utility_module::span< T, Extent >::data_, and kcenon::thread::utils::span().

Here is the call graph for this function:

◆ first() [2/4]

template<typename T , size_t Extent = size_t(-1)>
template<size_t Count>
span< element_type, Count > utility_module::span< T, Extent >::first ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 159 of file span.h.

160 {
161 return span<element_type, Count>(data_, Count);
162 }

References utility_module::span< T, Extent >::data_, and kcenon::thread::utils::span().

Here is the call graph for this function:

◆ first() [3/4]

template<typename T , size_t Extent = size_t(-1)>
span< element_type, dynamic_extent > utility_module::span< T, Extent >::first ( size_type count) const
inlinenodiscardconstexprnoexcept

Definition at line 170 of file span.h.

171 {
172 return span<element_type, dynamic_extent>(data_, count);
173 }

References utility_module::span< T, Extent >::data_, and kcenon::thread::utils::span().

Here is the call graph for this function:

◆ first() [4/4]

template<typename T , size_t Extent = size_t(-1)>
span< element_type, dynamic_extent > utility_module::span< T, Extent >::first ( size_type count) const
inlinenodiscardconstexprnoexcept

Definition at line 164 of file span.h.

165 {
166 return span<element_type, dynamic_extent>(data_, count);
167 }

References utility_module::span< T, Extent >::data_, and kcenon::thread::utils::span().

Here is the call graph for this function:

◆ front() [1/2]

template<typename T , size_t Extent = size_t(-1)>
reference utility_module::span< T, Extent >::front ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 141 of file span.h.

142 {
143 return data_[0];
144 }

References utility_module::span< T, Extent >::data_.

◆ front() [2/2]

template<typename T , size_t Extent = size_t(-1)>
reference utility_module::span< T, Extent >::front ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 135 of file span.h.

136 {
137 return data_[0];
138 }

References utility_module::span< T, Extent >::data_.

◆ last() [1/4]

template<typename T , size_t Extent = size_t(-1)>
template<size_t Count>
span< element_type, Count > utility_module::span< T, Extent >::last ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 176 of file span.h.

177 {
178 return span<element_type, Count>(data_ + (size_ - Count), Count);
179 }

References utility_module::span< T, Extent >::data_, utility_module::span< T, Extent >::size_, and kcenon::thread::utils::span().

Here is the call graph for this function:

◆ last() [2/4]

template<typename T , size_t Extent = size_t(-1)>
template<size_t Count>
span< element_type, Count > utility_module::span< T, Extent >::last ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 170 of file span.h.

171 {
172 return span<element_type, Count>(data_ + (size_ - Count), Count);
173 }

References utility_module::span< T, Extent >::data_, utility_module::span< T, Extent >::size_, and kcenon::thread::utils::span().

Here is the call graph for this function:

◆ last() [3/4]

template<typename T , size_t Extent = size_t(-1)>
span< element_type, dynamic_extent > utility_module::span< T, Extent >::last ( size_type count) const
inlinenodiscardconstexprnoexcept

Definition at line 181 of file span.h.

182 {
183 return span<element_type, dynamic_extent>(data_ + (size_ - count), count);
184 }

References utility_module::span< T, Extent >::data_, utility_module::span< T, Extent >::size_, and kcenon::thread::utils::span().

Here is the call graph for this function:

◆ last() [4/4]

template<typename T , size_t Extent = size_t(-1)>
span< element_type, dynamic_extent > utility_module::span< T, Extent >::last ( size_type count) const
inlinenodiscardconstexprnoexcept

Definition at line 175 of file span.h.

176 {
177 return span<element_type, dynamic_extent>(data_ + (size_ - count), count);
178 }

References utility_module::span< T, Extent >::data_, utility_module::span< T, Extent >::size_, and kcenon::thread::utils::span().

Here is the call graph for this function:

◆ operator=() [1/2]

template<typename T , size_t Extent = size_t(-1)>
span & utility_module::span< T, Extent >::operator= ( const span< T, Extent > & other)
constexprdefaultnoexcept

◆ operator=() [2/2]

template<typename T , size_t Extent = size_t(-1)>
span & utility_module::span< T, Extent >::operator= ( const span< T, Extent > & other)
constexprdefaultnoexcept

◆ operator[]() [1/2]

template<typename T , size_t Extent = size_t(-1)>
reference utility_module::span< T, Extent >::operator[] ( size_type idx) const
inlinenodiscardconstexprnoexcept

Definition at line 136 of file span.h.

137 {
138 return data_[idx];
139 }

References utility_module::span< T, Extent >::data_.

◆ operator[]() [2/2]

template<typename T , size_t Extent = size_t(-1)>
reference utility_module::span< T, Extent >::operator[] ( size_type idx) const
inlinenodiscardconstexprnoexcept

Definition at line 130 of file span.h.

131 {
132 return data_[idx];
133 }

References utility_module::span< T, Extent >::data_.

◆ rbegin() [1/2]

template<typename T , size_t Extent = size_t(-1)>
reverse_iterator utility_module::span< T, Extent >::rbegin ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 158 of file span.h.

158{ return reverse_iterator(end()); }
std::reverse_iterator< iterator > reverse_iterator
Definition span.h:53
constexpr iterator end() const noexcept
Definition span.h:149

References utility_module::span< T, Extent >::end().

Here is the call graph for this function:

◆ rbegin() [2/2]

template<typename T , size_t Extent = size_t(-1)>
reverse_iterator utility_module::span< T, Extent >::rbegin ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 152 of file span.h.

152{ return reverse_iterator(end()); }

References utility_module::span< T, Extent >::end().

Here is the call graph for this function:

◆ rend() [1/2]

template<typename T , size_t Extent = size_t(-1)>
reverse_iterator utility_module::span< T, Extent >::rend ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 159 of file span.h.

159{ return reverse_iterator(begin()); }
constexpr iterator begin() const noexcept
Definition span.h:148

References utility_module::span< T, Extent >::begin().

Here is the call graph for this function:

◆ rend() [2/2]

template<typename T , size_t Extent = size_t(-1)>
reverse_iterator utility_module::span< T, Extent >::rend ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 153 of file span.h.

153{ return reverse_iterator(begin()); }

References utility_module::span< T, Extent >::begin().

Here is the call graph for this function:

◆ size() [1/2]

template<typename T , size_t Extent = size_t(-1)>
size_type utility_module::span< T, Extent >::size ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 131 of file span.h.

131{ return size_; }

References utility_module::span< T, Extent >::size_.

◆ size() [2/2]

template<typename T , size_t Extent = size_t(-1)>
size_type utility_module::span< T, Extent >::size ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 125 of file span.h.

125{ return size_; }

References utility_module::span< T, Extent >::size_.

◆ size_bytes() [1/2]

template<typename T , size_t Extent = size_t(-1)>
size_type utility_module::span< T, Extent >::size_bytes ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 132 of file span.h.

132{ return size_ * sizeof(element_type); }

References utility_module::span< T, Extent >::size_.

◆ size_bytes() [2/2]

template<typename T , size_t Extent = size_t(-1)>
size_type utility_module::span< T, Extent >::size_bytes ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 126 of file span.h.

126{ return size_ * sizeof(element_type); }

References utility_module::span< T, Extent >::size_.

◆ subspan() [1/4]

template<typename T , size_t Extent = size_t(-1)>
template<size_t Offset, size_t Count = dynamic_extent>
auto utility_module::span< T, Extent >::subspan ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 187 of file span.h.

188 {
189 constexpr size_t new_extent = Count != dynamic_extent ? Count :
190 (Extent != dynamic_extent ? Extent - Offset : dynamic_extent);
192 data_ + Offset,
193 Count != dynamic_extent ? Count : (size_ - Offset));
194 }

References utility_module::span< T, Extent >::data_, utility_module::span< T, Extent >::size_, and kcenon::thread::utils::span().

Here is the call graph for this function:

◆ subspan() [2/4]

template<typename T , size_t Extent = size_t(-1)>
template<size_t Offset, size_t Count = dynamic_extent>
auto utility_module::span< T, Extent >::subspan ( ) const
inlinenodiscardconstexprnoexcept

Definition at line 181 of file span.h.

182 {
183 constexpr size_t new_extent = Count != dynamic_extent ? Count :
184 (Extent != dynamic_extent ? Extent - Offset : dynamic_extent);
186 data_ + Offset,
187 Count != dynamic_extent ? Count : (size_ - Offset));
188 }

References utility_module::span< T, Extent >::data_, utility_module::span< T, Extent >::size_, and kcenon::thread::utils::span().

Here is the call graph for this function:

◆ subspan() [3/4]

template<typename T , size_t Extent = size_t(-1)>
span< element_type, dynamic_extent > utility_module::span< T, Extent >::subspan ( size_type offset,
size_type count = dynamic_extent ) const
inlinenodiscardconstexprnoexcept

Definition at line 197 of file span.h.

198 {
199 size_type new_count = count == dynamic_extent ? size_ - offset : count;
200 return span<element_type, dynamic_extent>(data_ + offset, new_count);
201 }
size_t size_type
Definition span.h:45

References utility_module::span< T, Extent >::data_, utility_module::span< T, Extent >::size_, and kcenon::thread::utils::span().

Here is the call graph for this function:

◆ subspan() [4/4]

template<typename T , size_t Extent = size_t(-1)>
span< element_type, dynamic_extent > utility_module::span< T, Extent >::subspan ( size_type offset,
size_type count = dynamic_extent ) const
inlinenodiscardconstexprnoexcept

Definition at line 191 of file span.h.

192 {
193 size_type new_count = count == dynamic_extent ? size_ - offset : count;
194 return span<element_type, dynamic_extent>(data_ + offset, new_count);
195 }

References utility_module::span< T, Extent >::data_, utility_module::span< T, Extent >::size_, and kcenon::thread::utils::span().

Here is the call graph for this function:

Member Data Documentation

◆ data_

◆ dynamic_extent

template<typename T , size_t Extent = size_t(-1)>
static constexpr size_t kcenon::thread::utils::span::dynamic_extent = size_t(-1)
staticconstexpr

Definition at line 57 of file span.h.

◆ size_


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