31#ifndef ETL_SPAN_INCLUDED
32#define ETL_SPAN_INCLUDED
49#include "static_assert.h"
108 template <
typename T,
size_t Extent = etl::dynamic_extent>
113 typedef T element_type;
114 typedef typename etl::remove_cv<T>::type value_type;
115 typedef size_t size_type;
116 typedef T& reference;
117 typedef const T& const_reference;
119 typedef const T* const_pointer;
122 typedef const T* const_iterator;
123 typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
124 typedef ETL_OR_STD::reverse_iterator<const_iterator> const_reverse_iterator;
134 template <
typename TIterator,
typename TSize>
143 template <
typename TIterator>
153 template<
size_t Array_Size,
typename =
typename etl::enable_if<(Array_Size == Extent),
void>::type>
154 ETL_CONSTEXPR
span(element_type(&
begin_)[Array_Size]) ETL_NOEXCEPT
162 template<
size_t Array_Size>
174 template <
typename TContainer,
typename =
typename etl::enable_if<!etl::is_base_of<span_tag, etl::remove_reference_t<TContainer>>::value &&
175 !etl::is_po
inter<etl::remove_reference_t<TContainer>>::value &&
176 !etl::is_array<etl::remove_reference_t<TContainer>>::value&&
177 etl::is_same<etl::remove_cv_t<T>, etl::remove_cv_t<
typename etl::remove_reference_t<TContainer>::value_type>>::value,
void>::type>
187 template <
typename TContainer>
189 !
etl::is_pointer<
typename etl::remove_reference<TContainer>::type>::value &&
200 template <
typename TContainer>
202 !
etl::is_pointer<
typename etl::remove_reference<TContainer>::type>::value &&
214 : pbegin(
other.pbegin)
222 template <
typename U,
size_t N>
232 template <
typename U,
size_t N>
242 ETL_NODISCARD ETL_CONSTEXPR reference
front()
const ETL_NOEXCEPT
250 ETL_NODISCARD ETL_CONSTEXPR reference
back()
const ETL_NOEXCEPT
252 return *((pbegin +
Extent) - 1);
258 ETL_NODISCARD ETL_CONSTEXPR pointer
data()
const ETL_NOEXCEPT
266 ETL_NODISCARD ETL_CONSTEXPR const_iterator
cbegin()
const ETL_NOEXCEPT
274 ETL_NODISCARD ETL_CONSTEXPR iterator
begin()
const ETL_NOEXCEPT
284 return circular_iterator(
begin(),
end());
290 ETL_NODISCARD ETL_CONSTEXPR const_iterator
cend()
const ETL_NOEXCEPT
298 ETL_NODISCARD ETL_CONSTEXPR iterator
end()
const ETL_NOEXCEPT
306 ETL_NODISCARD ETL_CONSTEXPR const_reverse_iterator crbegin()
const ETL_NOEXCEPT
308 return const_reverse_iterator((pbegin +
Extent));
314 ETL_NODISCARD ETL_CONSTEXPR reverse_iterator rbegin()
const ETL_NOEXCEPT
316 return reverse_iterator((pbegin +
Extent));
324 return reverse_circular_iterator(rbegin(),
rend());
330 ETL_NODISCARD ETL_CONSTEXPR const_reverse_iterator
crend()
const ETL_NOEXCEPT
332 return const_reverse_iterator(pbegin);
338 ETL_NODISCARD ETL_CONSTEXPR reverse_iterator
rend()
const ETL_NOEXCEPT
340 return reverse_iterator(pbegin);
354 ETL_NODISCARD ETL_CONSTEXPR
size_t size()
const ETL_NOEXCEPT
364 return sizeof(element_type) *
Extent;
380 pbegin =
other.pbegin;
387 ETL_NODISCARD ETL_CONSTEXPR14 reference
at(
size_t i)
397 ETL_NODISCARD ETL_CONSTEXPR14 const_reference
at(
size_t i)
const
415 template <
size_t COUNT>
419 ETL_STATIC_ASSERT((
Extent != etl::dynamic_extent) ?
COUNT <=
Extent :
true,
"Original span does not contain COUNT elements");
435 template <
size_t COUNT>
439 ETL_STATIC_ASSERT((
Extent != etl::dynamic_extent) ?
COUNT <=
Extent :
true,
"Original span does not contain COUNT elements");
456 template <
size_t OFFSET,
size_t COUNT = etl::dynamic_extent>
457 ETL_NODISCARD ETL_CONSTEXPR
461 ETL_STATIC_ASSERT((
Extent != etl::dynamic_extent) ?
OFFSET <=
Extent : true,
"OFFSET is not within the original span");
464 ETL_STATIC_ASSERT((
Extent != etl::dynamic_extent) && (
COUNT != etl::dynamic_extent) ?
COUNT <= (
Extent -
OFFSET) : true,
"OFFSET + COUNT is not within the original span");
473 template <
size_t OFFSET,
size_t COUNT>
477 ETL_STATIC_ASSERT((
Extent != etl::dynamic_extent) ?
OFFSET <=
Extent :
true,
"OFFSET is not within the original span");
480 ETL_STATIC_ASSERT((
Extent != etl::dynamic_extent) && (
COUNT != etl::dynamic_extent) ?
COUNT <= (
Extent -
OFFSET) :
true,
"OFFSET + COUNT is not within the original span");
482 if (
COUNT == etl::dynamic_extent)
515 template<
typename TNew>
521 Extent *
sizeof(element_type) /
sizeof(
TNew));
533 template <
typename T,
size_t Extent>
542 template <
typename T>
547 typedef T element_type;
548 typedef typename etl::remove_cv<T>::type value_type;
549 typedef size_t size_type;
550 typedef T& reference;
551 typedef const T& const_reference;
553 typedef const T* const_pointer;
556 typedef const T* const_iterator;
557 typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
558 typedef ETL_OR_STD::reverse_iterator<const_iterator> const_reverse_iterator;
563 static ETL_CONSTANT
size_t extent = etl::dynamic_extent;
568 ETL_CONSTEXPR
span() ETL_NOEXCEPT
569 : pbegin(ETL_NULLPTR)
577 template <
typename TIterator,
typename TSize>
587 template <
typename TIterator>
597 template<
size_t Array_Size>
598 ETL_CONSTEXPR
span(element_type(&
begin_)[Array_Size]) ETL_NOEXCEPT
600 , pend(
begin_ + Array_Size)
609 template <
typename TContainer,
typename =
typename etl::enable_if<!etl::is_base_of<span_tag, etl::remove_reference_t<TContainer>>::value &&
610 !etl::is_po
inter<etl::remove_reference_t<TContainer>>::value &&
611 !etl::is_array<etl::remove_reference_t<TContainer>>::value &&
612 etl::is_same<etl::remove_cv_t<T>, etl::remove_cv_t<
typename etl::remove_reference_t<TContainer>::value_type>>::value,
void>::type>
615 , pend(a.data() + a.size())
623 template <
typename TContainer>
625 !
etl::is_pointer<
typename etl::remove_reference<TContainer>::type>::value &&
637 template <
typename TContainer>
639 !
etl::is_pointer<
typename etl::remove_reference<TContainer>::type>::value &&
652 : pbegin(
other.pbegin)
660 template <
typename U,
size_t N>
662 : pbegin(
other.data())
670 ETL_NODISCARD ETL_CONSTEXPR reference
front()
const ETL_NOEXCEPT
678 ETL_NODISCARD ETL_CONSTEXPR reference
back()
const ETL_NOEXCEPT
686 ETL_NODISCARD ETL_CONSTEXPR pointer
data()
const ETL_NOEXCEPT
694 ETL_NODISCARD ETL_CONSTEXPR const_iterator
cbegin()
const ETL_NOEXCEPT
702 ETL_NODISCARD ETL_CONSTEXPR iterator
begin()
const ETL_NOEXCEPT
712 return circular_iterator(
begin(),
end());
718 ETL_NODISCARD ETL_CONSTEXPR const_iterator
cend()
const ETL_NOEXCEPT
726 ETL_NODISCARD ETL_CONSTEXPR iterator
end()
const ETL_NOEXCEPT
742 ETL_NODISCARD ETL_CONSTEXPR const_reverse_iterator crbegin()
const ETL_NOEXCEPT
744 return const_reverse_iterator(pend);
752 return reverse_circular_iterator(rbegin(),
rend());
758 ETL_NODISCARD ETL_CONSTEXPR const_reverse_iterator
crend()
const ETL_NOEXCEPT
760 return const_reverse_iterator(pbegin);
766 ETL_NODISCARD ETL_CONSTEXPR reverse_iterator
rend()
const ETL_NOEXCEPT
768 return reverse_iterator(pbegin);
776 return (pbegin == pend);
782 ETL_NODISCARD ETL_CONSTEXPR
size_t size()
const ETL_NOEXCEPT
784 return (pend - pbegin);
792 return sizeof(element_type) * (pend - pbegin);
808 pbegin =
other.pbegin;
816 ETL_NODISCARD ETL_CONSTEXPR14 reference
at(
size_t i)
826 ETL_NODISCARD ETL_CONSTEXPR14 const_reference
at(
size_t i)
const
844 template <
size_t COUNT>
861 template <
size_t COUNT>
879 template <
size_t OFFSET,
size_t COUNT = etl::dynamic_extent>
880 ETL_NODISCARD ETL_CONSTEXPR
890 template <
size_t OFFSET,
size_t COUNT>
893 if (
COUNT == etl::dynamic_extent)
926 template<
typename TNew>
932 (pend - pbegin) *
sizeof(element_type) /
sizeof(
TNew));
941 template<
typename TRet>
944 ETL_STATIC_ASSERT(
sizeof(
TRet) %
sizeof(element_type) == 0,
"sizeof(TRet) must be divisible by sizeof(T)");
960 template<
typename TRet>
963 ETL_STATIC_ASSERT(
sizeof(
TRet) %
sizeof(element_type) == 0,
"sizeof(TRet) must be divisible by sizeof(T)");
984 template <
typename T>
994 template <
typename T>
1000 template <
typename T,
size_t Extent>
1001 ETL_CONSTANT
size_t span<T, Extent>::extent;
1003 template <
typename T>
1004 ETL_CONSTANT
size_t span<T, etl::dynamic_extent>::extent;
1009 template <
typename T1,
size_t N1,
typename T2,
size_t N2>
1015 return (
lhs.begin() ==
rhs.begin()) && (
lhs.size() ==
rhs.size());
1021 template <
typename T1,
size_t N1,
typename T2,
size_t N2>
1037 template <
typename T1,
size_t N1,
typename T2,
size_t N2>
1041 return (
lhs.empty() &&
rhs.empty()) ||
1042 ((
lhs.begin() ==
rhs.begin()) && (
lhs.size() ==
rhs.size())) ||
1043 etl::equal(
lhs.begin(),
lhs.end(),
rhs.begin(),
rhs.end());
1056 template <
typename T1,
size_t N1,
typename T2,
size_t N2>
1061 if (
src.empty() || (
src.begin() ==
dst.begin()))
1065 if (
src.size() >
dst.size())
1077 template <
typename TIterator>
1081 template <
typename TIterator,
typename TSize>
1085 template <
typename T,
size_t N>
1089 template <
typename T,
size_t N>
1093 template <
typename T,
size_t N>
1097#if ETL_USING_STL && ETL_USING_CPP11
1098 template <
typename T,
size_t N>
1099 span(std::array<T, N>&)
1102 template <
typename T,
size_t N>
1103 span(
const std::array<T, N>&)
1111#if ETL_USING_8BIT_TYPES
1112 template <
typename T,
size_t Extent>
1113 struct hash<
etl::span<T, Extent> >
1117 return etl::private_hash::generic_hash<size_t>(
reinterpret_cast<const uint8_t*
>(view.
data()),
1118 reinterpret_cast<const uint8_t*
>(view.
data() + view.
size()));
1126 template <
class T,
size_t N>
1127 span<
const byte, (
N == etl::dynamic_extent) ? (etl::dynamic_extent) : (
N *
sizeof(
T))>
1136 template <
class T,
size_t N>
1137 span<byte, (
N == etl::dynamic_extent) ? (etl::dynamic_extent) : (
N *
sizeof(
T))>
Definition iterator.h:228
ETL_NODISCARD ETL_CONSTEXPR circular_iterator begin_circular() const ETL_NOEXCEPT
Returns a circular iterator to the beginning of the span.
Definition span.h:710
ETL_CONSTEXPR span(const TContainer &a, typename etl::enable_if<!etl::is_base_of< span_tag, 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
Definition span.h:638
ETL_NODISCARD etl::span< TRet > take(size_t const n)
Definition span.h:942
ETL_CONSTEXPR span(const span &other) ETL_NOEXCEPT
Copy constructor.
Definition span.h:651
ETL_CONSTEXPR span() ETL_NOEXCEPT
Default constructor.
Definition span.h:568
etl::span< element_type, COUNT !=etl::dynamic_extent ? COUNT :etl::dynamic_extent > subspan() const
Obtains a span that is a view from OFFSET over the next COUNT elements of this span.
Definition span.h:891
void advance(size_t elements) ETL_NOEXCEPT
Definition span.h:917
ETL_NODISCARD ETL_CONSTEXPR reverse_circular_iterator rbegin_circular() const ETL_NOEXCEPT
Returns a reverse circular iterator to the end of the span.
Definition span.h:750
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.
Definition span.h:845
ETL_NODISCARD TRet & take()
Definition span.h:961
ETL_NODISCARD ETL_CONSTEXPR size_t size() const ETL_NOEXCEPT
Returns the size of the span.
Definition span.h:782
ETL_CONSTEXPR span(const etl::span< U, N > &other) ETL_NOEXCEPT
Copy constructor.
Definition span.h:661
ETL_NODISCARD ETL_CONSTEXPR14 etl::span< element_type, etl::dynamic_extent > subspan(size_t offset, size_t count=etl::dynamic_extent) const ETL_NOEXCEPT
Obtains a span that is a view from 'offset' over the next 'count' elements of this span.
Definition span.h:907
ETL_NODISCARD ETL_CONSTEXPR bool empty() const ETL_NOEXCEPT
Returns true if the span size is zero.
Definition span.h:774
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.
Definition span.h:862
ETL_NODISCARD ETL_CONSTEXPR etl::span< element_type, etl::dynamic_extent > first(size_t count) const ETL_NOEXCEPT
Obtains a span that is a view over the first count elements of this span.
Definition span.h:853
ETL_NODISCARD ETL_CONSTEXPR reference back() const ETL_NOEXCEPT
Returns a reference to the last element.
Definition span.h:678
ETL_NODISCARD ETL_CONSTEXPR etl::span< element_type, etl::dynamic_extent > last(size_t count) const ETL_NOEXCEPT
Obtains a span that is a view over the last count elements of this span.
Definition span.h:870
ETL_NODISCARD ETL_CONSTEXPR const_reverse_iterator crend() const ETL_NOEXCEPT
Returns a const reverse iterator to the end of the span.
Definition span.h:758
ETL_CONSTEXPR reference operator[](const size_t i) const
Returns a reference to the indexed value.
Definition span.h:836
ETL_CONSTEXPR span(TContainer &a, typename etl::enable_if<!etl::is_base_of< span_tag, 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
Definition span.h:624
ETL_NODISCARD ETL_CONSTEXPR const_iterator cend() const ETL_NOEXCEPT
Returns a const iterator to the end of the span.
Definition span.h:718
ETL_NODISCARD ETL_CONSTEXPR iterator begin() const ETL_NOEXCEPT
Returns an iterator to the beginning of the span.
Definition span.h:702
ETL_NODISCARD ETL_CONSTEXPR14 const_reference at(size_t i) const
Returns a const reference to the value at index 'i'.
Definition span.h:826
ETL_NODISCARD ETL_CONSTEXPR14 etl::span< TNew, etl::dynamic_extent > reinterpret_as() const
Reinterpret the span as a span with different element type.
Definition span.h:927
ETL_NODISCARD ETL_CONSTEXPR reference front() const ETL_NOEXCEPT
Returns a reference to the first element.
Definition span.h:670
ETL_CONSTEXPR span(element_type(&begin_)[Array_Size]) ETL_NOEXCEPT
Construct from C array.
Definition span.h:598
ETL_NODISCARD ETL_CONSTEXPR iterator end() const ETL_NOEXCEPT
Returns an iterator to the end of the span.
Definition span.h:726
ETL_CONSTEXPR span(const TIterator begin_, const TIterator end_)
Construct from iterators.
Definition span.h:588
ETL_NODISCARD ETL_CONSTEXPR const_iterator cbegin() const ETL_NOEXCEPT
Returns a const iterator to the beginning of the span.
Definition span.h:694
ETL_NODISCARD ETL_CONSTEXPR pointer data() const ETL_NOEXCEPT
Returns a pointer to the first element of the internal storage.
Definition span.h:686
ETL_CONSTEXPR span(const TIterator begin_, const TSize size_) ETL_NOEXCEPT
Construct from pointer + size.
Definition span.h:578
ETL_NODISCARD ETL_CONSTEXPR reverse_iterator rend() const ETL_NOEXCEPT
Returns a reverse iterator to the end of the span.
Definition span.h:766
ETL_NODISCARD ETL_CONSTEXPR size_t max_size() const ETL_NOEXCEPT
Returns the maximum possible size of the span.
Definition span.h:798
ETL_NODISCARD ETL_CONSTEXPR size_t size_bytes() const ETL_NOEXCEPT
Returns the size of the span in bytes.
Definition span.h:790
ETL_NODISCARD ETL_CONSTEXPR14 reference at(size_t i)
Returns a reference to the value at index 'i'.
Definition span.h:816
Span - Fixed Extent.
Definition span.h:110
ETL_NODISCARD ETL_CONSTEXPR reverse_iterator rend() const ETL_NOEXCEPT
Returns a reverse iterator to the end of the span.
Definition span.h:338
ETL_NODISCARD ETL_CONSTEXPR circular_iterator begin_circular() const ETL_NOEXCEPT
Returns a circular iterator to the beginning of the span.
Definition span.h:282
ETL_NODISCARD ETL_CONSTEXPR const_iterator cbegin() const ETL_NOEXCEPT
Returns a const iterator to the beginning of the span.
Definition span.h:266
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.
Definition span.h:436
ETL_CONSTEXPR14 span(const etl::span< U, N > &other, typename etl::enable_if< N==etl::dynamic_extent, void >::type *=0)
Definition span.h:233
ETL_CONSTEXPR span(const span &other) ETL_NOEXCEPT
Copy constructor.
Definition span.h:213
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.
Definition span.h:474
void advance(size_t elements) ETL_NOEXCEPT
Definition span.h:506
ETL_NODISCARD ETL_CONSTEXPR etl::span< element_type, etl::dynamic_extent > first(size_t count) const ETL_NOEXCEPT
Obtains a span that is a view over the first count elements of this span.
Definition span.h:427
ETL_NODISCARD ETL_CONSTEXPR etl::span< element_type, etl::dynamic_extent > subspan(size_t offset, size_t count=etl::dynamic_extent) const ETL_NOEXCEPT
Obtains a span that is a view from 'offset' over the next 'count' elements of this span.
Definition span.h:496
ETL_NODISCARD ETL_CONSTEXPR etl::span< element_type, etl::dynamic_extent > last(size_t count) const ETL_NOEXCEPT
Obtains a span that is a view over the last count elements of this span.
Definition span.h:447
ETL_NODISCARD ETL_CONSTEXPR reverse_circular_iterator rbegin_circular() const ETL_NOEXCEPT
Returns a reverse circular iterator to the end of the span.
Definition span.h:322
ETL_NODISCARD ETL_CONSTEXPR iterator begin() const ETL_NOEXCEPT
Returns an iterator to the beginning of the span.
Definition span.h:274
ETL_NODISCARD ETL_CONSTEXPR size_t size_bytes() const ETL_NOEXCEPT
Returns the size of the span in bytes.
Definition span.h:362
span(const TContainer &a, typename etl::enable_if<!etl::is_base_of< span_tag, 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
Definition span.h:201
ETL_NODISCARD ETL_CONSTEXPR bool empty() const ETL_NOEXCEPT
Returns true if the span size is zero.
Definition span.h:346
ETL_NODISCARD ETL_CONSTEXPR const_iterator cend() const ETL_NOEXCEPT
Returns a const iterator to the end of the span.
Definition span.h:290
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.
Definition span.h:416
ETL_NODISCARD ETL_CONSTEXPR size_t size() const ETL_NOEXCEPT
Returns the size of the span.
Definition span.h:354
ETL_NODISCARD ETL_CONSTEXPR reference back() const ETL_NOEXCEPT
Returns a reference to the last element.
Definition span.h:250
ETL_CONSTEXPR14 span & operator=(const span &other) ETL_NOEXCEPT
Assign from a span.
Definition span.h:378
ETL_CONSTEXPR span(const TIterator begin_, const TIterator)
Construct from iterators.
Definition span.h:144
ETL_NODISCARD ETL_CONSTEXPR pointer data() const ETL_NOEXCEPT
Returns a pointer to the first element of the internal storage.
Definition span.h:258
ETL_CONSTEXPR span(const TIterator begin_, const TSize) ETL_NOEXCEPT
Construct from iterators + size.
Definition span.h:135
ETL_NODISCARD ETL_CONSTEXPR14 reference at(size_t i)
Returns a reference to the value at index 'i'.
Definition span.h:387
ETL_CONSTEXPR reference operator[](const size_t i) const
Returns a reference to the indexed value.
Definition span.h:407
ETL_NODISCARD ETL_CONSTEXPR14 const_reference at(size_t i) const
Returns a const reference to the value at index 'i'.
Definition span.h:397
ETL_CONSTEXPR span(const etl::span< U, N > &other, typename etl::enable_if< N==Extent, void >::type *=0) ETL_NOEXCEPT
Definition span.h:223
ETL_NODISCARD ETL_CONSTEXPR const_reverse_iterator crend() const ETL_NOEXCEPT
Returns a const reverse iterator to the end of the span.
Definition span.h:330
span(TContainer &a, typename etl::enable_if<!etl::is_base_of< span_tag, 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
Definition span.h:188
ETL_NODISCARD ETL_CONSTEXPR size_t max_size() const ETL_NOEXCEPT
Returns the maximum possible size of the span.
Definition span.h:370
ETL_NODISCARD ETL_CONSTEXPR14 etl::span< TNew, etl::dynamic_extent > reinterpret_as() const
Reinterpret the span as a span with different element type.
Definition span.h:516
ETL_NODISCARD ETL_CONSTEXPR reference front() const ETL_NOEXCEPT
Returns a reference to the first element.
Definition span.h:242
ETL_NODISCARD ETL_CONSTEXPR iterator end() const ETL_NOEXCEPT
Returns an iterator to the end of the span.
Definition span.h:298
ETL_CONSTEXPR span(element_type(&begin_)[Array_Size], typename etl::enable_if<(Array_Size==Extent), void >::type *=0) ETL_NOEXCEPT
Construct from C array.
Definition span.h:163
#define ETL_ASSERT(b, e)
Definition error_handler.h:356
Definition exception.h:47
add_rvalue_reference
Definition type_traits_generator.h:1366
enable_if
Definition type_traits_generator.h:1230
extent
Definition type_traits_generator.h:1241
is_array
Definition type_traits_generator.h:1130
is_base_of
Definition type_traits_generator.h:1291
is_const
Definition type_traits_generator.h:947
is_pointer
Definition type_traits_generator.h:1140
is_same
Definition type_traits_generator.h:1080
remove_cv
Definition type_traits_generator.h:1007
remove_reference
Definition type_traits_generator.h:917
bitset_ext
Definition absolute.h:38
span< byte,(N==etl::dynamic_extent) ?(etl::dynamic_extent) :(N *sizeof(T))> as_writable_bytes(span< T, N > s) ETL_NOEXCEPT
Obtains a view to the byte representation of the elements of the span s.
Definition span.h:1138
ETL_CONSTEXPR T * to_address(T *p)
Definition memory.h:62
span< const byte,(N==etl::dynamic_extent) ?(etl::dynamic_extent) :(N *sizeof(T))> as_bytes(span< T, N > s) ETL_NOEXCEPT
Template deduction guides.
Definition span.h:1128
bool is_aligned(const void *p, size_t required_alignment)
Check that 'p' has 'required_alignment'.
Definition alignment.h:91
bool operator!=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1109
bool operator==(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1097
ETL_CONSTEXPR span< T, Extent > make_span(T(&data)[Extent])
Definition span.h:534
ETL_NODISCARD ETL_CONSTEXPR14 T round_half_even_unscaled(T value) ETL_NOEXCEPT
Definition scaled_rounding.h:314