31#ifndef ETL_PVOIDVECTOR_INCLUDED
32#define ETL_PVOIDVECTOR_INCLUDED
34#define ETL_IN_PVOIDVECTOR
58 typedef void* value_type;
59 typedef value_type& reference;
60 typedef const value_type& const_reference;
61 typedef value_type* pointer;
62 typedef const value_type* const_pointer;
63 typedef value_type* iterator;
64 typedef const value_type* const_iterator;
65 typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
66 typedef ETL_OR_STD::reverse_iterator<const_iterator> const_reverse_iterator;
67 typedef size_t size_type;
68 typedef etl::iterator_traits<iterator>::difference_type difference_type;
87 return const_iterator(p_buffer);
103 const_iterator
end()
const
105 return const_iterator(p_end);
114 return const_iterator(p_buffer);
123 return const_iterator(p_end);
132 return reverse_iterator(
end());
141 return const_reverse_iterator(
end());
150 return reverse_iterator(
begin());
157 const_reverse_iterator
rend()
const
159 return const_reverse_iterator(
begin());
168 return const_reverse_iterator(
cend());
175 const_reverse_iterator
crend()
const
177 return const_reverse_iterator(
cbegin());
190 p_end = p_buffer + new_size;
201 void resize(
size_t new_size, value_type value)
205 pointer p_new_end = p_buffer + new_size;
208 if (p_end < p_new_end)
210 etl::fill(p_end, p_new_end, value);
224 p_end = p_buffer + new_size;
256 reference
at(
size_t i)
269 const_reference
at(
size_t i)
const
341 template <
typename TIterator>
342 typename etl::enable_if<!etl::is_pointer<TIterator>::value,
void>
::type assign(TIterator first, TIterator last)
344#if ETL_IS_DEBUG_BUILD
345 difference_type d = etl::distance(first, last);
351 while (first != last)
353 *p_end++ = (
void*)(*first);
366 template <
typename TIterator>
367 typename etl::enable_if<etl::is_pointer<TIterator>::value,
void>
::type assign(TIterator first, TIterator last)
369#if ETL_IS_DEBUG_BUILD
370 difference_type d = etl::distance(first, last);
376 void** p_first = (
void**)(first);
377 void** p_last = (
void**)(last);
379 p_end =
etl::mem_move(p_first, p_last, p_buffer) + (p_last - p_first);
395 p_end = etl::fill_n(p_buffer, n, value);
450#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
453 iterator
insert(const_iterator position, value_type value)
458 iterator position_ = to_iterator(position);
462 if (position_ !=
end())
476#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
485#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
493 iterator position_ = to_iterator(position);
495 if (position_ !=
end())
499 *position_ = ETL_NULLPTR;
503 *p_end++ = ETL_NULLPTR;
508#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
517#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
520 iterator
emplace(const_iterator position, value_type value)
525 iterator position_ = to_iterator(position);
527 if (position_ !=
end())
540#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
552#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
555 void insert(const_iterator position,
size_t n, value_type value)
560 iterator position_ = to_iterator(position);
563 etl::fill_n(position_, n, value);
567#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
579 template <
typename TIterator>
580 typename etl::enable_if<!etl::is_pointer<TIterator>::value,
void>
::type insert(const_iterator position, TIterator first, TIterator last)
582 size_t count =
static_cast<size_t>(etl::distance(first, last));
584 iterator position_ = to_iterator(position);
590 etl::copy(first, last, position_);
602 template <
typename TIterator>
603 typename etl::enable_if<etl::is_pointer<TIterator>::value,
void>
::type insert(const_iterator position, TIterator first, TIterator last)
605 size_t count =
static_cast<size_t>(etl::distance(first, last));
607 iterator position_ = to_iterator(position);
639 iterator
erase(const_iterator i_element)
643 iterator i_element_ = to_iterator(i_element);
660 iterator
erase(const_iterator first, const_iterator last)
664 iterator first_ = to_iterator(first);
665 iterator last_ = to_iterator(last);
668 size_t n_delete =
static_cast<size_t>(etl::distance(first, last));
715 return size_t(p_end - p_buffer);
724 return (p_end == p_buffer);
752 , p_buffer(p_buffer_)
770 uintptr_t length =
static_cast<uintptr_t
>(p_end - p_buffer);
772 p_buffer = p_buffer_;
773 p_end = p_buffer_ + length;
814 return !(lhs == rhs);
826 return etl::lexicographical_compare(lhs.
begin(), lhs.
end(), rhs.
begin(), rhs.
end());
870#undef ETL_IN_PVOIDVECTOR
#define ETL_ASSERT(b, e)
Definition error_handler.h:511
bool full() const
Definition pvoidvector.h:731
iterator erase(const_iterator first, const_iterator last)
Definition pvoidvector.h:660
etl::enable_if<!etl::is_pointer< TIterator >::value, void >::type assign(TIterator first, TIterator last)
Definition pvoidvector.h:342
const_reference at(size_t i) const
Definition pvoidvector.h:269
iterator begin()
Definition pvoidvector.h:76
void emplace_back(value_type value)
Definition pvoidvector.h:425
iterator erase(iterator i_element)
Definition pvoidvector.h:623
pointer data()
Definition pvoidvector.h:319
size_type max_size() const
Definition vector_base.h:140
const_reverse_iterator rend() const
Definition pvoidvector.h:157
reference operator[](size_t i)
Definition pvoidvector.h:232
void initialise()
Initialise the vector.
Definition pvoidvector.h:760
bool empty() const
Definition pvoidvector.h:722
etl::enable_if<!etl::is_pointer< TIterator >::value, void >::type insert(const_iterator position, TIterator first, TIterator last)
Definition pvoidvector.h:580
const_iterator end() const
Definition pvoidvector.h:103
vector_base(size_t max_size_)
Constructor.
Definition vector_base.h:150
const size_type CAPACITY
The maximum number of elements in the vector.
Definition vector_base.h:170
iterator emplace(const_iterator position)
Definition pvoidvector.h:488
etl::pvoidvector & operator=(const etl::pvoidvector &rhs)
Assignment operator.
Definition pvoidvector.h:679
void insert(const_iterator position, size_t n, value_type value)
Definition pvoidvector.h:555
reverse_iterator rend()
Definition pvoidvector.h:148
iterator insert(const_iterator position, value_type value)
Definition pvoidvector.h:453
void clear()
Clears the vector.
Definition pvoidvector.h:401
void assign(size_t n, value_type value)
Definition pvoidvector.h:389
iterator emplace(const_iterator position, value_type value)
Definition pvoidvector.h:520
void resize(size_t new_size)
Definition pvoidvector.h:186
etl::enable_if< etl::is_pointer< TIterator >::value, void >::type insert(const_iterator position, TIterator first, TIterator last)
Definition pvoidvector.h:603
void pop_back()
Definition pvoidvector.h:436
const_reverse_iterator crend() const
Definition pvoidvector.h:175
const_reference front() const
Definition pvoidvector.h:289
void repair_buffer(void **p_buffer_)
Fix the internal pointers after a low level memory copy.
Definition pvoidvector.h:768
reference back()
Definition pvoidvector.h:299
iterator end()
Definition pvoidvector.h:94
void uninitialized_resize(size_t new_size)
Definition pvoidvector.h:220
const_pointer data() const
Definition pvoidvector.h:328
reference front()
Definition pvoidvector.h:279
pvoidvector(void **p_buffer_, size_t MAX_SIZE)
Constructor.
Definition pvoidvector.h:750
const_reference operator[](size_t i) const
Definition pvoidvector.h:243
void push_back(value_type value)
Definition pvoidvector.h:412
const_reference back() const
Definition pvoidvector.h:309
size_t available() const
Definition pvoidvector.h:740
const_iterator cend() const
Definition pvoidvector.h:121
const_iterator begin() const
Definition pvoidvector.h:85
const_iterator cbegin() const
Definition pvoidvector.h:112
size_type size() const
Definition pvoidvector.h:713
iterator erase(const_iterator i_element)
Definition pvoidvector.h:639
const_reverse_iterator crbegin() const
Definition pvoidvector.h:166
reverse_iterator rbegin()
Definition pvoidvector.h:130
etl::enable_if< etl::is_pointer< TIterator >::value, void >::type assign(TIterator first, TIterator last)
Definition pvoidvector.h:367
reference at(size_t i)
Definition pvoidvector.h:256
void resize(size_t new_size, value_type value)
Definition pvoidvector.h:201
const_reverse_iterator rbegin() const
Definition pvoidvector.h:139
Definition pvoidvector.h:55
Definition vector_base.h:80
Definition vector_base.h:66
Definition vector_base.h:94
bitset_ext
Definition absolute.h:40
ETL_CONSTEXPR14 bool operator==(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1081
T * mem_move(const T *sb, const T *se, T *db) ETL_NOEXCEPT
Definition memory.h:2877
bool operator>(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1133
bool operator>=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1147
ETL_CONSTEXPR14 bool operator!=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1093
T * mem_copy(const T *sb, const T *se, T *db) ETL_NOEXCEPT
Definition memory.h:2835
bool operator<(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1106
bool operator<=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1120
iterator
Definition iterator.h:424