Embedded Template Library 1.0
Loading...
Searching...
No Matches
etl::span< T, Extent > Class Template Reference

Span - Fixed Extent. More...

#include <span.h>

Public Types

typedef T element_type
typedef etl::remove_cv< T >::type value_type
typedef size_t size_type
typedef T & reference
typedef const T & const_reference
typedef T * pointer
typedef const T * const_pointer
typedef T * iterator
typedef const T * const_iterator
typedef ETL_OR_STD::reverse_iterator< iterator > reverse_iterator
typedef ETL_OR_STD::reverse_iterator< const_iterator > const_reverse_iterator
typedef etl::circular_iterator< pointer > circular_iterator
typedef etl::circular_iterator< ETL_OR_STD::reverse_iterator< pointer > > reverse_circular_iterator

Public Member Functions

template<typename TIterator, typename TSize>
ETL_CONSTEXPR span (const TIterator begin_, const TSize) ETL_NOEXCEPT
 Construct from iterators + size.
template<typename TIterator>
ETL_CONSTEXPR span (const TIterator begin_, const TIterator) ETL_NOEXCEPT
 Construct from iterators.
template<size_t Array_Size>
ETL_CONSTEXPR span (element_type(&begin_)[Array_Size], typename etl::enable_if<(Array_Size==Extent), void >::type *=0) ETL_NOEXCEPT
 Construct from C array.
template<typename TContainer>
 span (TContainer &a, typename etl::enable_if<!etl::is_base_of< span_tag, typename etl::remove_reference< TContainer >::type >::value &&!etl::is_std_array< typename etl::remove_reference< TContainer >::type >::value &&!etl::is_etl_array< typename etl::remove_reference< TContainer >::type >::value &&!etl::is_pointer< typename etl::remove_reference< TContainer >::type >::value &&!etl::is_array< TContainer >::value &&etl::is_same< typename etl::remove_cv< T >::type, typename etl::remove_cv< typename etl::remove_reference< TContainer >::type::value_type >::type >::value, void >::type *=0) ETL_NOEXCEPT
template<typename TContainer>
 span (const TContainer &a, typename etl::enable_if<!etl::is_base_of< span_tag, typename etl::remove_reference< TContainer >::type >::value &&!etl::is_std_array< typename etl::remove_reference< TContainer >::type >::value &&!etl::is_etl_array< typename etl::remove_reference< TContainer >::type >::value &&!etl::is_pointer< typename etl::remove_reference< TContainer >::type >::value &&!etl::is_array< TContainer >::value &&etl::is_same< typename etl::remove_cv< T >::type, typename etl::remove_cv< typename etl::remove_reference< TContainer >::type::value_type >::type >::value, void >::type *=0) ETL_NOEXCEPT
ETL_CONSTEXPR span (const span &other) ETL_NOEXCEPT
 Copy constructor.
template<typename U, size_t Size>
ETL_CONSTEXPR span (const etl::span< U, Size > &other, typename etl::enable_if< Size==Extent, void >::type *=0) ETL_NOEXCEPT
template<typename U, size_t Size>
ETL_CONSTEXPR14 span (const etl::span< U, Size > &other, typename etl::enable_if< Size==etl::dynamic_extent, void >::type *=0)
template<typename U, size_t Size>
ETL_CONSTEXPR span (etl::array< U, Size > &other, typename etl::enable_if< Size==Extent, void >::type *=0) ETL_NOEXCEPT
 Constructor from etl array.
template<typename U, size_t Size>
ETL_CONSTEXPR span (const etl::array< U, Size > &other, typename etl::enable_if< Size==Extent &&etl::is_const< T >::value, void >::type *=0) ETL_NOEXCEPT
 Constructor from const etl array.
ETL_NODISCARD ETL_CONSTEXPR reference front () const ETL_NOEXCEPT
 Returns a reference to the first element.
ETL_NODISCARD ETL_CONSTEXPR reference back () const ETL_NOEXCEPT
 Returns a reference to the last element.
ETL_NODISCARD ETL_CONSTEXPR pointer data () const ETL_NOEXCEPT
 Returns a pointer to the first element of the internal storage.
ETL_NODISCARD ETL_CONSTEXPR const_iterator cbegin () const ETL_NOEXCEPT
 Returns a const iterator to the beginning of the span.
ETL_NODISCARD ETL_CONSTEXPR iterator begin () const ETL_NOEXCEPT
 Returns an iterator to the beginning of the span.
ETL_NODISCARD ETL_CONSTEXPR circular_iterator begin_circular () const ETL_NOEXCEPT
 Returns a circular iterator to the beginning of the span.
ETL_NODISCARD ETL_CONSTEXPR const_iterator cend () const ETL_NOEXCEPT
 Returns a const iterator to the end of the span.
ETL_NODISCARD ETL_CONSTEXPR iterator end () const ETL_NOEXCEPT
 Returns an iterator to the end of the span.
ETL_NODISCARD ETL_CONSTEXPR const_reverse_iterator crbegin () const ETL_NOEXCEPT
ETL_NODISCARD ETL_CONSTEXPR reverse_iterator rbegin () const ETL_NOEXCEPT
ETL_NODISCARD ETL_CONSTEXPR reverse_circular_iterator rbegin_circular () const ETL_NOEXCEPT
 Returns a reverse circular iterator to the end of the span.
ETL_NODISCARD ETL_CONSTEXPR const_reverse_iterator crend () const ETL_NOEXCEPT
 Returns a const reverse iterator to the end of the span.
ETL_NODISCARD ETL_CONSTEXPR reverse_iterator rend () const ETL_NOEXCEPT
 Returns a reverse iterator to the end of the span.
ETL_NODISCARD ETL_CONSTEXPR bool empty () const ETL_NOEXCEPT
 Returns true if the span size is zero.
ETL_NODISCARD ETL_CONSTEXPR size_t size () const ETL_NOEXCEPT
 Returns the size of the span.
ETL_NODISCARD ETL_CONSTEXPR size_t size_bytes () const ETL_NOEXCEPT
 Returns the size of the span in bytes.
ETL_NODISCARD ETL_CONSTEXPR size_t max_size () const ETL_NOEXCEPT
 Returns the maximum possible size of the span.
ETL_CONSTEXPR14 spanoperator= (const span &other) ETL_NOEXCEPT
 Assign from a span.
ETL_NODISCARD ETL_CONSTEXPR14 reference at (size_t i)
 Returns a reference to the value at index 'i'.
ETL_NODISCARD ETL_CONSTEXPR14 const_reference at (size_t i) const
 Returns a const reference to the value at index 'i'.
ETL_CONSTEXPR reference operator[] (const size_t i) const
 Returns a reference to the indexed value.
template<size_t COUNT>
ETL_NODISCARD ETL_CONSTEXPR etl::span< element_type, COUNT > first () const ETL_NOEXCEPT
 Obtains a span that is a view over the first COUNT elements of this span.
ETL_NODISCARD ETL_CONSTEXPR etl::span< element_type, etl::dynamic_extent > first (size_t count) const ETL_NOEXCEPT_EXPR(ETL_NOT_USING_EXCEPTIONS||ETL_NOT_CHECKING_EXTRA)
 Obtains a span that is a view over the first count elements of this span.
template<size_t COUNT>
ETL_NODISCARD ETL_CONSTEXPR etl::span< element_type, COUNT > last () const ETL_NOEXCEPT
 Obtains a span that is a view over the last COUNT elements of this span.
ETL_NODISCARD ETL_CONSTEXPR etl::span< element_type, etl::dynamic_extent > last (size_t count) const ETL_NOEXCEPT_EXPR(ETL_NOT_USING_EXCEPTIONS||ETL_NOT_CHECKING_EXTRA)
 Obtains a span that is a view over the last count elements of this span.
template<size_t OFFSET, size_t COUNT>
etl::span< element_type, COUNT !=etl::dynamic_extent ? COUNT :Extent - OFFSET > subspan () const
 Obtains a span that is a view from OFFSET over the next COUNT elements of this span.
ETL_NODISCARD ETL_CONSTEXPR etl::span< element_type, etl::dynamic_extent > subspan (size_t offset, size_t count=etl::dynamic_extent) const ETL_NOEXCEPT_EXPR(ETL_NOT_USING_EXCEPTIONS||ETL_NOT_CHECKING_EXTRA)
 Obtains a span that is a view from 'offset' over the next 'count' elements of this span.
void advance (size_t elements) ETL_NOEXCEPT
template<typename TNew>
ETL_NODISCARD ETL_CONSTEXPR14 etl::span< TNew, Extent *sizeof(element_type)/sizeof(TNew)> reinterpret_as () const
 Reinterpret the span as a span with different element type.

Static Public Attributes

static ETL_CONSTANT size_t extent = Extent

Detailed Description

template<typename T, size_t Extent = etl::dynamic_extent>
class etl::span< T, Extent >

Span - Fixed Extent.

Constructor & Destructor Documentation

◆ span() [1/5]

template<typename T, size_t Extent = etl::dynamic_extent>
template<size_t Array_Size>
ETL_CONSTEXPR etl::span< T, Extent >::span ( element_type(&) begin_[Array_Size],
typename etl::enable_if<(Array_Size==Extent), void >::type * = 0 )
inline

Construct from C array.

Construct from C array

◆ span() [2/5]

template<typename T, size_t Extent = etl::dynamic_extent>
template<typename TContainer>
etl::span< T, Extent >::span ( TContainer & a,
typename etl::enable_if<!etl::is_base_of< span_tag, typename etl::remove_reference< TContainer >::type >::value &&!etl::is_std_array< typename etl::remove_reference< TContainer >::type >::value &&!etl::is_etl_array< typename etl::remove_reference< TContainer >::type >::value &&!etl::is_pointer< typename etl::remove_reference< TContainer >::type >::value &&!etl::is_array< TContainer >::value &&etl::is_same< typename etl::remove_cv< T >::type, typename etl::remove_cv< typename etl::remove_reference< TContainer >::type::value_type >::type >::value, void >::type * = 0 )
inline

Construct from a container or other type that supports data() and size() member functions.

◆ span() [3/5]

template<typename T, size_t Extent = etl::dynamic_extent>
template<typename TContainer>
etl::span< T, Extent >::span ( const TContainer & a,
typename etl::enable_if<!etl::is_base_of< span_tag, typename etl::remove_reference< TContainer >::type >::value &&!etl::is_std_array< typename etl::remove_reference< TContainer >::type >::value &&!etl::is_etl_array< typename etl::remove_reference< TContainer >::type >::value &&!etl::is_pointer< typename etl::remove_reference< TContainer >::type >::value &&!etl::is_array< TContainer >::value &&etl::is_same< typename etl::remove_cv< T >::type, typename etl::remove_cv< typename etl::remove_reference< TContainer >::type::value_type >::type >::value, void >::type * = 0 )
inline

Construct from a container or other type that supports data() and size() member functions.

◆ span() [4/5]

template<typename T, size_t Extent = etl::dynamic_extent>
template<typename U, size_t Size>
ETL_CONSTEXPR etl::span< T, Extent >::span ( const etl::span< U, Size > & other,
typename etl::enable_if< Size==Extent, void >::type * = 0 )
inline

Copy constructor From fixed extent span.

◆ span() [5/5]

template<typename T, size_t Extent = etl::dynamic_extent>
template<typename U, size_t Size>
ETL_CONSTEXPR14 etl::span< T, Extent >::span ( const etl::span< U, Size > & other,
typename etl::enable_if< Size==etl::dynamic_extent, void >::type * = 0 )
inline

Copy constructor From dynamic extent span.

Member Function Documentation

◆ advance()

template<typename T, size_t Extent = etl::dynamic_extent>
void etl::span< T, Extent >::advance ( size_t elements)
inline

Moves the pointer to the first element of the span further by a specified number of elements.

Template Parameters
elementsNumber of elements to move forward

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