31#ifndef ETL_MULTI_SPAN_INCLUDED
32#define ETL_MULTI_SPAN_INCLUDED
72 : p_current(ETL_NULLPTR)
74 , p_value(ETL_NULLPTR)
81 if (p_current != p_end)
85 if (p_value == p_current->end())
90 }
while ((p_current != p_end) && p_current->empty());
92 if (p_current != p_end)
94 p_value = p_current->begin();
98 p_value = ETL_NULLPTR;
153 return (
lhs.p_current ==
rhs.p_current);
166 typedef typename span_list_type::iterator span_list_iterator;
172 , p_value(ETL_NULLPTR)
174 if (p_current != p_end)
176 while ((p_current != p_end) && p_current->empty())
181 if (p_current != p_end)
183 p_value = p_current->begin();
187 p_value = ETL_NULLPTR;
192 typedef const span_type* span_list_pointer;
194 span_list_pointer p_current;
195 span_list_pointer p_end;
211 template <
typename TContainer>
213 : span_list(a.data(), a.data() + a.size())
221 template <
typename TContainer>
223 : span_list(a.data(), a.data() + a.size())
230 template <
typename TIterator>
239 template <
typename TIterator>
249 : span_list(
other.span_list)
258 span_list =
other.span_list;
266 ETL_CONSTEXPR14
iterator begin()
const
274 ETL_CONSTEXPR14 iterator end()
const
276 return iterator(span_list.
end(), span_list.
end());
286 for (
typename span_list_type::iterator itr = span_list.
begin();
287 itr != span_list.
end();
301 if (span_list.
empty())
318 for (
typename span_list_type::iterator itr = span_list.
begin();
319 itr != span_list.
end();
333 return span_list.
size();
338 span_list_type span_list;
Iterator.
Definition multi_span.h:66
friend bool operator==(const iterator &lhs, const iterator &rhs)
== operator
Definition multi_span.h:151
reference operator*()
Definition multi_span.h:119
pointer operator->()
-> operator
Definition multi_span.h:135
friend bool operator!=(const iterator &lhs, const iterator &rhs)
!= operator
Definition multi_span.h:159
Definition multi_span.h:48
ETL_CONSTEXPR14 multi_span(TIterator begin_, size_t length_)
Constructor.
Definition multi_span.h:240
ETL_CONSTEXPR14 multi_span(const multi_span &other)
Copy Constructor.
Definition multi_span.h:248
ETL_CONSTEXPR14 size_t size_spans() const ETL_NOEXCEPT
Returns the number of spans in the multi_span.
Definition multi_span.h:331
ETL_CONSTEXPR14 size_t size() const ETL_NOEXCEPT
Returns the number of elements in the multi_span.
Definition multi_span.h:282
ETL_CONSTEXPR14 multi_span & operator=(const multi_span &other)
Assignment operator.
Definition multi_span.h:256
ETL_CONSTEXPR14 multi_span(const TContainer &a) ETL_NOEXCEPT
Definition multi_span.h:222
ETL_CONSTEXPR14 multi_span(TIterator begin_, TIterator end_)
Constructor.
Definition multi_span.h:231
ETL_CONSTEXPR14 multi_span(span_list_type span_list_)
Constructor.
Definition multi_span.h:202
ETL_CONSTEXPR14 size_t size_bytes() const ETL_NOEXCEPT
Returns the size of the multi_span.
Definition multi_span.h:314
ETL_CONSTEXPR14 multi_span(TContainer &a) ETL_NOEXCEPT
Definition multi_span.h:212
ETL_CONSTEXPR14 bool empty() const ETL_NOEXCEPT
Returns true if the multi_span size is zero.
Definition multi_span.h:299
ETL_NODISCARD ETL_CONSTEXPR iterator begin() const ETL_NOEXCEPT
Returns an iterator to the beginning of the span.
Definition span.h:191
ETL_NODISCARD ETL_CONSTEXPR bool empty() const ETL_NOEXCEPT
Returns true if the span size is zero.
Definition span.h:239
ETL_NODISCARD ETL_CONSTEXPR size_t size() const ETL_NOEXCEPT
Returns the size of the span.
Definition span.h:247
ETL_NODISCARD ETL_CONSTEXPR iterator end() const ETL_NOEXCEPT
Returns an iterator to the end of the span.
Definition span.h:207
ETL_CONSTEXPR17 etl::enable_if<!etl::is_same< T, etl::nullptr_t >::value, T >::type * addressof(T &t)
Definition addressof.h:52
bitset_ext
Definition absolute.h:38
iterator
Definition iterator.h:399
pair holds two objects of arbitrary type
Definition utility.h:164