scc 2025.09
SystemC components library
TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent > Class Template Reference

Public Types

using element_type = ElementType
using value_type = typename std::remove_cv<ElementType>::type
using size_type = std::size_t
using difference_type = std::ptrdiff_t
using pointer = element_type*
using const_pointer = const element_type*
using reference = element_type&
using const_reference = const element_type&
using iterator = pointer
using reverse_iterator = std::reverse_iterator<iterator>
template<std::size_t Offset, std::size_t Count = dynamic_extent>
using subspan_return_t

Public Member Functions

TCB_SPAN_CONSTEXPR11 span (pointer ptr, size_type count)
TCB_SPAN_CONSTEXPR11 span (pointer first_elem, pointer last_elem)
template<std::size_t N, std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||N==E) &&detail::is_container_element_type_compatible< element_type(&)[N], ElementType >::value, int >::type = 0>
constexpr span (element_type(&arr)[N]) noexcept
template<typename T, std::size_t N, std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||N==E) &&detail::is_container_element_type_compatible< std::array< T, N > &, ElementType >::value, int >::type = 0>
TCB_SPAN_ARRAY_CONSTEXPR span (std::array< T, N > &arr) noexcept
template<typename T, std::size_t N, std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||N==E) &&detail::is_container_element_type_compatible< const std::array< T, N > &, ElementType >::value, int >::type = 0>
TCB_SPAN_ARRAY_CONSTEXPR span (const std::array< T, N > &arr) noexcept
template<typename Container, std::size_t E = Extent, typename std::enable_if< E==dynamic_extent &&detail::is_container< Container >::value &&detail::is_container_element_type_compatible< Container &, ElementType >::value, int >::type = 0>
constexpr span (Container &cont)
template<typename Container, std::size_t E = Extent, typename std::enable_if< E==dynamic_extent &&detail::is_container< Container >::value &&detail::is_container_element_type_compatible< const Container &, ElementType >::value, int >::type = 0>
constexpr span (const Container &cont)
constexpr span (const span &other) noexcept=default
template<typename OtherElementType, std::size_t OtherExtent, typename std::enable_if<(Extent==dynamic_extent||OtherExtent==dynamic_extent||Extent==OtherExtent) &&std::is_convertible< OtherElementType(*)[], ElementType(*)[]>::value, int >::type = 0>
constexpr span (const span< OtherElementType, OtherExtent > &other) noexcept
TCB_SPAN_CONSTEXPR_ASSIGN span & operator= (const span &other) noexcept=default
template<std::size_t Count>
TCB_SPAN_CONSTEXPR11 span< element_type, Count > first () const
template<std::size_t Count>
TCB_SPAN_CONSTEXPR11 span< element_type, Count > last () const
template<std::size_t Offset, std::size_t Count = dynamic_extent>
TCB_SPAN_CONSTEXPR11 subspan_return_t< Offset, Count > subspan () const
TCB_SPAN_CONSTEXPR11 span< element_type, dynamic_extent > first (size_type count) const
TCB_SPAN_CONSTEXPR11 span< element_type, dynamic_extent > last (size_type count) const
TCB_SPAN_CONSTEXPR11 span< element_type, dynamic_extent > subspan (size_type offset, size_type count=dynamic_extent) const
constexpr size_type size () const noexcept
constexpr size_type size_bytes () const noexcept
TCB_SPAN_NODISCARD constexpr bool empty () const noexcept
TCB_SPAN_CONSTEXPR11 reference operator[] (size_type idx) const
TCB_SPAN_CONSTEXPR11 reference front () const
TCB_SPAN_CONSTEXPR11 reference back () const
constexpr pointer data () const noexcept
constexpr iterator begin () const noexcept
constexpr iterator end () const noexcept
TCB_SPAN_ARRAY_CONSTEXPR reverse_iterator rbegin () const noexcept
TCB_SPAN_ARRAY_CONSTEXPR reverse_iterator rend () const noexcept

Static Public Attributes

static constexpr size_type extent = Extent

Detailed Description

template<typename ElementType, std::size_t Extent>
class TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >

Definition at line 246 of file span.h.

Member Typedef Documentation

◆ const_pointer

template<typename ElementType, std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::const_pointer = const element_type*

Definition at line 262 of file span.h.

◆ const_reference

template<typename ElementType, std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::const_reference = const element_type&

Definition at line 264 of file span.h.

◆ difference_type

template<typename ElementType, std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::difference_type = std::ptrdiff_t

Definition at line 260 of file span.h.

◆ element_type

template<typename ElementType, std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::element_type = ElementType

Definition at line 257 of file span.h.

◆ iterator

template<typename ElementType, std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::iterator = pointer

Definition at line 265 of file span.h.

◆ pointer

template<typename ElementType, std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::pointer = element_type*

Definition at line 261 of file span.h.

◆ reference

template<typename ElementType, std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::reference = element_type&

Definition at line 263 of file span.h.

◆ reverse_iterator

template<typename ElementType, std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::reverse_iterator = std::reverse_iterator<iterator>

Definition at line 266 of file span.h.

◆ size_type

template<typename ElementType, std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size_type = std::size_t

Definition at line 259 of file span.h.

◆ subspan_return_t

template<typename ElementType, std::size_t Extent>
template<std::size_t Offset, std::size_t Count = dynamic_extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::subspan_return_t
Initial value:
span<ElementType, Count != dynamic_extent ? Count : (Extent != dynamic_extent ? Extent - Offset : dynamic_extent)>

Definition at line 343 of file span.h.

◆ value_type

template<typename ElementType, std::size_t Extent>
using TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::value_type = typename std::remove_cv<ElementType>::type

Definition at line 258 of file span.h.

Constructor & Destructor Documentation

◆ span() [1/9]

template<typename ElementType, std::size_t Extent>
template<std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||E<=0), int >::type = 0>
TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( )
inlineconstexprnoexcept

Definition at line 271 of file span.h.

◆ span() [2/9]

template<typename ElementType, std::size_t Extent>
TCB_SPAN_CONSTEXPR11 TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( pointer ptr,
size_type count )
inline

Definition at line 273 of file span.h.

◆ span() [3/9]

template<typename ElementType, std::size_t Extent>
TCB_SPAN_CONSTEXPR11 TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( pointer first_elem,
pointer last_elem )
inline

Definition at line 278 of file span.h.

◆ span() [4/9]

template<typename ElementType, std::size_t Extent>
template<std::size_t N, std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||N==E) &&detail::is_container_element_type_compatible< element_type(&)[N], ElementType >::value, int >::type = 0>
TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( element_type(&) arr[N])
inlineconstexprnoexcept

Definition at line 287 of file span.h.

◆ span() [5/9]

template<typename ElementType, std::size_t Extent>
template<typename T, std::size_t N, std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||N==E) &&detail::is_container_element_type_compatible< std::array< T, N > &, ElementType >::value, int >::type = 0>
TCB_SPAN_ARRAY_CONSTEXPR TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( std::array< T, N > & arr)
inlinenoexcept

Definition at line 294 of file span.h.

◆ span() [6/9]

template<typename ElementType, std::size_t Extent>
template<typename T, std::size_t N, std::size_t E = Extent, typename std::enable_if<(E==dynamic_extent||N==E) &&detail::is_container_element_type_compatible< const std::array< T, N > &, ElementType >::value, int >::type = 0>
TCB_SPAN_ARRAY_CONSTEXPR TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( const std::array< T, N > & arr)
inlinenoexcept

Definition at line 301 of file span.h.

◆ span() [7/9]

template<typename ElementType, std::size_t Extent>
template<typename Container, std::size_t E = Extent, typename std::enable_if< E==dynamic_extent &&detail::is_container< Container >::value &&detail::is_container_element_type_compatible< Container &, ElementType >::value, int >::type = 0>
TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( Container & cont)
inlineconstexpr

Definition at line 308 of file span.h.

◆ span() [8/9]

template<typename ElementType, std::size_t Extent>
template<typename Container, std::size_t E = Extent, typename std::enable_if< E==dynamic_extent &&detail::is_container< Container >::value &&detail::is_container_element_type_compatible< const Container &, ElementType >::value, int >::type = 0>
TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( const Container & cont)
inlineconstexpr

Definition at line 315 of file span.h.

◆ span() [9/9]

template<typename ElementType, std::size_t Extent>
template<typename OtherElementType, std::size_t OtherExtent, typename std::enable_if<(Extent==dynamic_extent||OtherExtent==dynamic_extent||Extent==OtherExtent) &&std::is_convertible< OtherElementType(*)[], ElementType(*)[]>::value, int >::type = 0>
TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::span ( const span< OtherElementType, OtherExtent > & other)
inlineconstexprnoexcept

Definition at line 324 of file span.h.

Member Function Documentation

◆ back()

template<typename ElementType, std::size_t Extent>
TCB_SPAN_CONSTEXPR11 reference TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::back ( ) const
inline

Definition at line 384 of file span.h.

◆ begin()

template<typename ElementType, std::size_t Extent>
iterator TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::begin ( ) const
inlineconstexprnoexcept

Definition at line 392 of file span.h.

◆ data()

template<typename ElementType, std::size_t Extent>
pointer TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::data ( ) const
inlineconstexprnoexcept

Definition at line 389 of file span.h.

◆ empty()

template<typename ElementType, std::size_t Extent>
TCB_SPAN_NODISCARD constexpr bool TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::empty ( ) const
inlineconstexprnoexcept

Definition at line 371 of file span.h.

◆ end()

template<typename ElementType, std::size_t Extent>
iterator TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::end ( ) const
inlineconstexprnoexcept

Definition at line 394 of file span.h.

◆ first() [1/2]

template<typename ElementType, std::size_t Extent>
template<std::size_t Count>
TCB_SPAN_CONSTEXPR11 span< element_type, Count > TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::first ( ) const
inline

Definition at line 332 of file span.h.

◆ first() [2/2]

template<typename ElementType, std::size_t Extent>
TCB_SPAN_CONSTEXPR11 span< element_type, dynamic_extent > TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::first ( size_type count) const
inline

Definition at line 351 of file span.h.

◆ front()

template<typename ElementType, std::size_t Extent>
TCB_SPAN_CONSTEXPR11 reference TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::front ( ) const
inline

Definition at line 379 of file span.h.

◆ last() [1/2]

template<typename ElementType, std::size_t Extent>
template<std::size_t Count>
TCB_SPAN_CONSTEXPR11 span< element_type, Count > TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::last ( ) const
inline

Definition at line 337 of file span.h.

◆ last() [2/2]

template<typename ElementType, std::size_t Extent>
TCB_SPAN_CONSTEXPR11 span< element_type, dynamic_extent > TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::last ( size_type count) const
inline

Definition at line 356 of file span.h.

◆ operator[]()

template<typename ElementType, std::size_t Extent>
TCB_SPAN_CONSTEXPR11 reference TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::operator[] ( size_type idx) const
inline

Definition at line 374 of file span.h.

◆ rbegin()

template<typename ElementType, std::size_t Extent>
TCB_SPAN_ARRAY_CONSTEXPR reverse_iterator TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::rbegin ( ) const
inlinenoexcept

Definition at line 396 of file span.h.

◆ rend()

template<typename ElementType, std::size_t Extent>
TCB_SPAN_ARRAY_CONSTEXPR reverse_iterator TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::rend ( ) const
inlinenoexcept

Definition at line 398 of file span.h.

◆ size()

template<typename ElementType, std::size_t Extent>
size_type TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size ( ) const
inlineconstexprnoexcept

Definition at line 367 of file span.h.

◆ size_bytes()

template<typename ElementType, std::size_t Extent>
size_type TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::size_bytes ( ) const
inlineconstexprnoexcept

Definition at line 369 of file span.h.

◆ subspan() [1/2]

template<typename ElementType, std::size_t Extent>
template<std::size_t Offset, std::size_t Count = dynamic_extent>
TCB_SPAN_CONSTEXPR11 subspan_return_t< Offset, Count > TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::subspan ( ) const
inline

Definition at line 346 of file span.h.

◆ subspan() [2/2]

template<typename ElementType, std::size_t Extent>
TCB_SPAN_CONSTEXPR11 span< element_type, dynamic_extent > TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::subspan ( size_type offset,
size_type count = dynamic_extent ) const
inline

Definition at line 361 of file span.h.

Member Data Documentation

◆ extent

template<typename ElementType, std::size_t Extent>
size_type TCB_SPAN_NAMESPACE_NAME::span< ElementType, Extent >::extent = Extent
staticconstexpr

Definition at line 268 of file span.h.


The documentation for this class was generated from the following file:
  • /home/eyck/Projects/MINRES/SystemC-Components/src/common/nonstd/span.h