31#ifndef ETL_PVOIDVECTOR_INCLUDED
32#define ETL_PVOIDVECTOR_INCLUDED
34#define ETL_IN_PVOIDVECTOR
36#include "../platform.h"
37#include "../algorithm.h"
39#include "../type_traits.h"
40#include "../error_handler.h"
41#include "../functional.h"
42#include "../iterator.h"
58 typedef void* value_type;
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;
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());
331 template <
typename TIterator>
335#if ETL_IS_DEBUG_BUILD
336 difference_type
d = etl::distance(first, last);
342 while (first != last)
344 *p_end++ = (
void*)(*first);
356 template <
typename TIterator>
360#if ETL_IS_DEBUG_BUILD
361 difference_type
d = etl::distance(first, last);
367 void**
p_first = (
void**)(first);
368 void**
p_last = (
void**)(last);
385 p_end = etl::fill_n(p_buffer,
n, value);
403#if defined(ETL_CHECK_PUSH_POP)
416#if defined(ETL_CHECK_PUSH_POP)
428#if defined(ETL_CHECK_PUSH_POP)
440#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
443 iterator
insert(const_iterator position, value_type value)
447 iterator
position_ = to_iterator(position);
465#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
473#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
480 iterator
position_ = to_iterator(position);
490 *p_end++ = ETL_NULLPTR;
495#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
503#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
506 iterator
emplace(const_iterator position, value_type value)
510 iterator
position_ = to_iterator(position);
525#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
536#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
539 void insert(const_iterator position,
size_t n, value_type value)
543 iterator
position_ = to_iterator(position);
545 etl::copy_backward(
position_, p_end, p_end +
n);
550#if defined(ETL_COMPILER_GCC) && defined(ETL_IN_UNIT_TEST)
562 template <
typename TIterator>
565 size_t count = etl::distance(first, last);
567 iterator
position_ = to_iterator(position);
571 etl::copy_backward(
position_, p_end, p_end + count);
612 iterator
erase(const_iterator first, const_iterator last)
614 iterator
first_ = to_iterator(first);
615 iterator
last_ = to_iterator(last);
618 size_t n_delete =
static_cast<size_t>(etl::distance(first, last));
635 etl::copy_n(
rhs.data(),
rhs.size(),
this->data());
651 etl::copy_n(
rhs.data(),
rhs.size(),
this->data());
665 return size_t(p_end - p_buffer);
674 return (p_end == p_buffer);
734 iterator to_iterator(const_iterator itr)
const
740 pvoidvector(
const pvoidvector&);
752 return (
lhs.size() ==
rhs.size()) && etl::equal(
lhs.begin(),
lhs.end(),
rhs.begin());
776 return etl::lexicographical_compare(
lhs.begin(),
lhs.end(),
rhs.begin(),
rhs.end());
818#undef ETL_IN_PVOIDVECTOR
#define ETL_ASSERT(b, e)
Definition error_handler.h:316
bool full() const
Definition pvoidvector.h:681
iterator erase(const_iterator first, const_iterator last)
Definition pvoidvector.h:612
etl::enable_if<!etl::is_pointer< TIterator >::value, void >::type assign(TIterator first, TIterator last)
Definition pvoidvector.h:333
const_reference at(size_t i) const
Definition pvoidvector.h:264
iterator begin()
Definition pvoidvector.h:76
void emplace_back(value_type value)
Definition pvoidvector.h:414
iterator erase(iterator i_element)
Definition pvoidvector.h:581
pointer data()
Definition pvoidvector.h:310
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:710
bool empty() const
Definition pvoidvector.h:672
const_iterator end() const
Definition pvoidvector.h:103
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:476
etl::pvoidvector & operator=(const etl::pvoidvector &rhs)
Assignment operator.
Definition pvoidvector.h:629
void insert(const_iterator position, size_t n, value_type value)
Definition pvoidvector.h:539
reverse_iterator rend()
Definition pvoidvector.h:148
iterator insert(const_iterator position, value_type value)
Definition pvoidvector.h:443
void clear()
Clears the vector.
Definition pvoidvector.h:391
void assign(size_t n, value_type value)
Definition pvoidvector.h:379
iterator emplace(const_iterator position, value_type value)
Definition pvoidvector.h:506
void resize(size_t new_size)
Definition pvoidvector.h:186
void pop_back()
Definition pvoidvector.h:426
const_reverse_iterator crend() const
Definition pvoidvector.h:175
const_reference front() const
Definition pvoidvector.h:283
void repair_buffer(void **p_buffer_)
Fix the internal pointers after a low level memory copy.
Definition pvoidvector.h:718
reference back()
Definition pvoidvector.h:292
iterator end()
Definition pvoidvector.h:94
void uninitialized_resize(size_t new_size)
Definition pvoidvector.h:219
const_pointer data() const
Definition pvoidvector.h:319
reference front()
Definition pvoidvector.h:274
pvoidvector(void **p_buffer_, size_t MAX_SIZE)
Constructor.
Definition pvoidvector.h:700
void push_back(value_type value)
Definition pvoidvector.h:401
const_reference back() const
Definition pvoidvector.h:301
size_t available() const
Definition pvoidvector.h:690
const_iterator cend() const
Definition pvoidvector.h:121
void insert(const_iterator position, TIterator first, TIterator last)
Definition pvoidvector.h:563
const_iterator begin() const
Definition pvoidvector.h:85
const_iterator cbegin() const
Definition pvoidvector.h:112
size_type size() const
Definition pvoidvector.h:663
iterator erase(const_iterator i_element)
Definition pvoidvector.h:594
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:358
reference at(size_t i)
Definition pvoidvector.h:252
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:122
Definition vector_base.h:80
Definition vector_base.h:66
Definition vector_base.h:94
bitset_ext
Definition absolute.h:38
bool operator>(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:693
bool operator>=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:705
bool operator!=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:654
bool operator==(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:642
bool operator<(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:666
bool operator<=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:681
iterator
Definition iterator.h:399
pair holds two objects of arbitrary type
Definition utility.h:164