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;
200 void resize(
size_t new_size, value_type value)
204 pointer p_new_end = p_buffer + new_size;
207 if (p_end < p_new_end)
209 etl::fill(p_end, p_new_end, value);
223 p_end = p_buffer + new_size;
254 reference
at(
size_t i)
266 const_reference
at(
size_t i)
const
337 template <
typename TIterator>
341#if ETL_IS_DEBUG_BUILD
342 difference_type d = etl::distance(first, last);
348 while (first != last)
350 *p_end++ = (
void*)(*first);
362 template <
typename TIterator>
366#if ETL_IS_DEBUG_BUILD
367 difference_type d = etl::distance(first, last);
373 void** p_first = (
void**)(first);
374 void** p_last = (
void**)(last);
376 p_end =
etl::mem_move(p_first, p_last, p_buffer) + (p_last - p_first);
391 p_end = etl::fill_n(p_buffer, n, value);
443#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
446 iterator
insert(const_iterator position, value_type value)
451 iterator position_ = to_iterator(position);
455 if (position_ !=
end())
469#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
477#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
485 iterator position_ = to_iterator(position);
487 if (position_ !=
end())
491 *position_ = ETL_NULLPTR;
495 *p_end++ = ETL_NULLPTR;
500#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
508#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
511 iterator
emplace(const_iterator position, value_type value)
516 iterator position_ = to_iterator(position);
518 if (position_ !=
end())
531#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
542#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
545 void insert(const_iterator position,
size_t n, value_type value)
550 iterator position_ = to_iterator(position);
553 etl::fill_n(position_, n, value);
557#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
569 template <
typename TIterator>
571 insert(const_iterator position, TIterator first, TIterator last)
573 size_t count = etl::distance(first, last);
575 iterator position_ = to_iterator(position);
581 etl::copy(first, last, position_);
593 template <
typename TIterator>
595 insert(const_iterator position, TIterator first, TIterator last)
597 size_t count = etl::distance(first, last);
599 iterator position_ = to_iterator(position);
629 iterator
erase(const_iterator i_element)
633 iterator i_element_ = to_iterator(i_element);
649 iterator
erase(const_iterator first, const_iterator last)
653 iterator first_ = to_iterator(first);
654 iterator last_ = to_iterator(last);
657 size_t n_delete =
static_cast<size_t>(etl::distance(first, last));
704 return size_t(p_end - p_buffer);
713 return (p_end == p_buffer);
741 , p_buffer(p_buffer_)
759 uintptr_t length =
static_cast<uintptr_t
>(p_end - p_buffer);
761 p_buffer = p_buffer_;
762 p_end = p_buffer_ + length;
803 return !(lhs == rhs);
815 return etl::lexicographical_compare(lhs.
begin(), lhs.
end(), rhs.
begin(), rhs.
end());
857#undef ETL_IN_PVOIDVECTOR
#define ETL_ASSERT(b, e)
Definition error_handler.h:356
enable_if
Definition type_traits_generator.h:1254
bool full() const
Definition pvoidvector.h:720
iterator erase(const_iterator first, const_iterator last)
Definition pvoidvector.h:649
etl::enable_if<!etl::is_pointer< TIterator >::value, void >::type assign(TIterator first, TIterator last)
Definition pvoidvector.h:339
const_reference at(size_t i) const
Definition pvoidvector.h:266
iterator begin()
Definition pvoidvector.h:76
void emplace_back(value_type value)
Definition pvoidvector.h:419
iterator erase(iterator i_element)
Definition pvoidvector.h:614
pointer data()
Definition pvoidvector.h:316
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:231
void initialise()
Initialise the vector.
Definition pvoidvector.h:749
bool empty() const
Definition pvoidvector.h:711
etl::enable_if<!etl::is_pointer< TIterator >::value, void >::type insert(const_iterator position, TIterator first, TIterator last)
Definition pvoidvector.h:571
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:480
etl::pvoidvector & operator=(const etl::pvoidvector &rhs)
Assignment operator.
Definition pvoidvector.h:668
void insert(const_iterator position, size_t n, value_type value)
Definition pvoidvector.h:545
reverse_iterator rend()
Definition pvoidvector.h:148
iterator insert(const_iterator position, value_type value)
Definition pvoidvector.h:446
void clear()
Clears the vector.
Definition pvoidvector.h:397
void assign(size_t n, value_type value)
Definition pvoidvector.h:385
iterator emplace(const_iterator position, value_type value)
Definition pvoidvector.h:511
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:595
void pop_back()
Definition pvoidvector.h:430
const_reverse_iterator crend() const
Definition pvoidvector.h:175
const_reference front() const
Definition pvoidvector.h:286
void repair_buffer(void **p_buffer_)
Fix the internal pointers after a low level memory copy.
Definition pvoidvector.h:757
reference back()
Definition pvoidvector.h:296
iterator end()
Definition pvoidvector.h:94
void uninitialized_resize(size_t new_size)
Definition pvoidvector.h:219
const_pointer data() const
Definition pvoidvector.h:325
reference front()
Definition pvoidvector.h:276
pvoidvector(void **p_buffer_, size_t MAX_SIZE)
Constructor.
Definition pvoidvector.h:739
void push_back(value_type value)
Definition pvoidvector.h:407
const_reference back() const
Definition pvoidvector.h:306
size_t available() const
Definition pvoidvector.h:729
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:702
iterator erase(const_iterator i_element)
Definition pvoidvector.h:629
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:364
reference at(size_t i)
Definition pvoidvector.h:254
void resize(size_t new_size, value_type value)
Definition pvoidvector.h:200
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:39
T * mem_move(const T *sb, const T *se, T *db) ETL_NOEXCEPT
Definition memory.h:2339
bool operator>(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1190
bool operator>=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1202
bool operator!=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1151
bool operator==(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1139
T * mem_copy(const T *sb, const T *se, T *db) ETL_NOEXCEPT
Definition memory.h:2289
bool operator<(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1163
bool operator<=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1178
iterator
Definition iterator.h:399