31#ifndef ETL_IVECTOR_POINTER_INCLUDED
32#define ETL_IVECTOR_POINTER_INCLUDED
34#ifndef ETL_IN_VECTOR_H
35#error This header is a private element of etl::ivector
52 typedef T* value_type;
53 typedef value_type& reference;
54 typedef const value_type& const_reference;
55 typedef value_type* pointer;
56 typedef const value_type* const_pointer;
57 typedef value_type* iterator;
58 typedef const value_type* const_iterator;
59 typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
60 typedef ETL_OR_STD::reverse_iterator<const_iterator> const_reverse_iterator;
61 typedef size_t size_type;
62 typedef typename etl::iterator_traits<iterator>::difference_type difference_type;
66 typedef value_type parameter_t;
105 const_iterator
end()
const
143 return const_reverse_iterator(const_iterator(
base_t::end()));
159 const_reverse_iterator
rend()
const
161 return const_reverse_iterator(const_iterator(
base_t::begin()));
170 return const_reverse_iterator(const_iterator(
base_t::cend()));
177 const_reverse_iterator
crend()
const
190 base_t::resize(new_size);
200 void resize(
size_t new_size, value_type value)
202 base_t::resize(new_size, value);
211 base_t::uninitialized_resize(new_size);
219 reference operator [](
size_t i)
221 return reference(base_t::operator[](i));
229 const_reference operator [](
size_t i)
const
231 return const_reference(base_t::operator[](i));
240 reference
at(
size_t i)
242 return reference(base_t::at(i));
251 const_reference
at(
size_t i)
const
253 return const_reference(base_t::at(i));
262 return reference(base_t::front());
271 return const_reference(base_t::front());
280 return reference(base_t::back());
289 return const_reference(base_t::back());
298 return pointer(base_t::data());
307 return const_pointer(base_t::data());
317 template <
typename TIterator>
318 void assign(TIterator first, TIterator last)
320 base_t::assign(first, last);
331 base_t::assign(n, value);
349 base_t::push_back(value);
359 base_t::emplace_back(value);
379 iterator
insert(const_iterator position, parameter_t value)
381 return iterator(base_t::insert(base_t::iterator(position), value));
387 iterator
emplace(const_iterator position, parameter_t value)
389 return iterator(base_t::emplace(base_t::iterator(position), value));
399 void insert(const_iterator position,
size_t n, parameter_t value)
401 base_t::insert(base_t::iterator(position), n, value);
411 template <
class TIterator>
412 void insert(const_iterator position, TIterator first, TIterator last)
414 base_t::insert(base_t::iterator(position), first, last);
432 iterator
erase(const_iterator i_element)
434 return iterator(
base_t::erase(base_t::const_iterator(i_element)));
445 iterator
erase(const_iterator first, const_iterator last)
447 return iterator(
base_t::erase(base_t::const_iterator(first), base_t::const_iterator(last)));
455 base_t::operator = (rhs);
466 (void)base_t::operator = (etl::move(rhs));
472#ifdef ETL_IVECTOR_REPAIR_ENABLE
476 virtual void repair() = 0;
485 :
pvoidvector(reinterpret_cast<void**>(p_buffer_), MAX_SIZE_)
490 template <
typename T>
495 typedef const T* value_type;
496 typedef value_type& reference;
497 typedef const value_type& const_reference;
498 typedef value_type* pointer;
499 typedef const value_type* const_pointer;
500 typedef value_type* iterator;
501 typedef const value_type* const_iterator;
502 typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
503 typedef ETL_OR_STD::reverse_iterator<const_iterator> const_reverse_iterator;
504 typedef size_t size_type;
505 typedef typename etl::iterator_traits<iterator>::difference_type difference_type;
509 typedef value_type parameter_t;
548 const_iterator
end()
const
586 return const_reverse_iterator(const_iterator(
base_t::end()));
602 const_reverse_iterator
rend()
const
604 return const_reverse_iterator(const_iterator(
base_t::begin()));
613 return const_reverse_iterator(const_iterator(
base_t::cend()));
620 const_reverse_iterator
crend()
const
633 base_t::resize(new_size);
643 void resize(
size_t new_size, value_type value)
645 base_t::resize(new_size,
const_cast<T*
>(value));
654 base_t::uninitialized_resize(new_size);
662 reference operator [](
size_t i)
664 return reference(base_t::operator[](i));
672 const_reference operator [](
size_t i)
const
674 return const_reference(base_t::operator[](i));
683 reference
at(
size_t i)
685 return reference(base_t::at(i));
694 const_reference
at(
size_t i)
const
696 return const_reference(base_t::at(i));
705 return reference(base_t::front());
714 return const_reference(base_t::front());
723 return reference(base_t::back());
732 return const_reference(base_t::back());
741 return pointer(base_t::data());
750 return const_pointer(base_t::data());
760 template <
typename TIterator>
761 void assign(TIterator first, TIterator last)
763 base_t::assign(first, last);
774 base_t::assign(n,
const_cast<T*
>(value));
792 base_t::push_back(
const_cast<T*
>(value));
810 iterator
insert(const_iterator position, parameter_t value)
812 return iterator(base_t::insert(base_t::iterator(position),
const_cast<T*
>(value)));
822 void insert(const_iterator position,
size_t n, parameter_t value)
824 base_t::insert(base_t::iterator(position), n,
const_cast<T*
>(value));
834 template <
class TIterator>
835 void insert(const_iterator position, TIterator first, TIterator last)
837 base_t::insert(base_t::iterator(position), first, last);
855 iterator
erase(const_iterator i_element)
868 iterator
erase(const_iterator first, const_iterator last)
870 return iterator(
base_t::erase(base_t::iterator(first), base_t::iterator(last)));
878 base_t::operator = (rhs);
889 (void)base_t::operator = (etl::move(rhs));
895#ifdef ETL_IVECTOR_REPAIR_ENABLE
899 virtual void repair() = 0;
907 ivector(
const T** p_buffer_,
size_t MAX_SIZE_)
908 :
pvoidvector(reinterpret_cast<void**>(const_cast<T**>(p_buffer_)), MAX_SIZE_)
920 template <
typename T>
923 return pvoidvector_equal(lhs, rhs);
933 template <
typename T>
936 return pvoidvector_not_equal(lhs, rhs);
946 template <
typename T>
949 return pvoidvector_less_than(lhs, rhs);
959 template <
typename T>
962 return pvoidvector_greater_than(lhs, rhs);
972 template <
typename T>
975 return pvoidvector_less_than_equal(lhs, rhs);
985 template <
typename T>
988 return pvoidvector_greater_than_equal(lhs, rhs);
const_reference front() const
Definition: ivectorpointer.h:712
const_reverse_iterator rbegin() const
Definition: ivectorpointer.h:584
void resize(size_t new_size, value_type value)
Definition: ivectorpointer.h:643
reference front()
Definition: ivectorpointer.h:703
void resize(size_t new_size)
Definition: ivectorpointer.h:631
void insert(const_iterator position, TIterator first, TIterator last)
Definition: ivectorpointer.h:835
const_reference back() const
Definition: ivectorpointer.h:730
iterator erase(iterator i_element)
Definition: ivectorpointer.h:845
iterator insert(const_iterator position, parameter_t value)
Definition: ivectorpointer.h:810
reverse_iterator rbegin()
Definition: ivectorpointer.h:575
ivector(const T **p_buffer_, size_t MAX_SIZE_)
Constructor.
Definition: ivectorpointer.h:907
void uninitialized_resize(size_t new_size)
Definition: ivectorpointer.h:652
const_iterator cbegin() const
Definition: ivectorpointer.h:557
iterator erase(const_iterator first, const_iterator last)
Definition: ivectorpointer.h:868
pointer data()
Definition: ivectorpointer.h:739
void push_back(parameter_t value)
Definition: ivectorpointer.h:790
reference at(size_t i)
Definition: ivectorpointer.h:683
iterator erase(const_iterator i_element)
Definition: ivectorpointer.h:855
const_iterator cend() const
Definition: ivectorpointer.h:566
const_pointer data() const
Definition: ivectorpointer.h:748
iterator end()
Definition: ivectorpointer.h:539
reference back()
Definition: ivectorpointer.h:721
void insert(const_iterator position, size_t n, parameter_t value)
Definition: ivectorpointer.h:822
const_reverse_iterator crbegin() const
Definition: ivectorpointer.h:611
const_reverse_iterator crend() const
Definition: ivectorpointer.h:620
const_reference at(size_t i) const
Definition: ivectorpointer.h:694
void pop_back()
Definition: ivectorpointer.h:799
void assign(TIterator first, TIterator last)
Definition: ivectorpointer.h:761
void clear()
Clears the vector.
Definition: ivectorpointer.h:780
const_iterator end() const
Definition: ivectorpointer.h:548
const_reverse_iterator rend() const
Definition: ivectorpointer.h:602
void assign(size_t n, parameter_t value)
Definition: ivectorpointer.h:772
reverse_iterator rend()
Definition: ivectorpointer.h:593
const_iterator begin() const
Definition: ivectorpointer.h:530
iterator begin()
Definition: ivectorpointer.h:521
reference front()
Definition: ivectorpointer.h:260
reverse_iterator rend()
Definition: ivectorpointer.h:150
const_reverse_iterator rbegin() const
Definition: ivectorpointer.h:141
void assign(TIterator first, TIterator last)
Definition: ivectorpointer.h:318
void push_back(parameter_t value)
Definition: ivectorpointer.h:347
const_iterator begin() const
Definition: ivectorpointer.h:87
const_iterator cbegin() const
Definition: ivectorpointer.h:114
void insert(const_iterator position, TIterator first, TIterator last)
Definition: ivectorpointer.h:412
void pop_back()
Definition: ivectorpointer.h:368
const_reference front() const
Definition: ivectorpointer.h:269
void assign(size_t n, parameter_t value)
Definition: ivectorpointer.h:329
reference back()
Definition: ivectorpointer.h:278
const_reference at(size_t i) const
Definition: ivectorpointer.h:251
const_reverse_iterator crend() const
Definition: ivectorpointer.h:177
iterator emplace(const_iterator position, parameter_t value)
Emplaces a value to the vector at the specified position.
Definition: ivectorpointer.h:387
const_reference back() const
Definition: ivectorpointer.h:287
void resize(size_t new_size, value_type value)
Definition: ivectorpointer.h:200
const_reverse_iterator rend() const
Definition: ivectorpointer.h:159
const_iterator end() const
Definition: ivectorpointer.h:105
const_iterator cend() const
Definition: ivectorpointer.h:123
void uninitialized_resize(size_t new_size)
Definition: ivectorpointer.h:209
reverse_iterator rbegin()
Definition: ivectorpointer.h:132
reference at(size_t i)
Definition: ivectorpointer.h:240
void insert(const_iterator position, size_t n, parameter_t value)
Definition: ivectorpointer.h:399
iterator erase(iterator i_element)
Definition: ivectorpointer.h:422
iterator erase(const_iterator i_element)
Definition: ivectorpointer.h:432
iterator end()
Definition: ivectorpointer.h:96
ivector(T **p_buffer_, size_t MAX_SIZE_)
Constructor.
Definition: ivectorpointer.h:484
const_reverse_iterator crbegin() const
Definition: ivectorpointer.h:168
iterator begin()
Definition: ivectorpointer.h:78
iterator insert(const_iterator position, parameter_t value)
Definition: ivectorpointer.h:379
pointer data()
Definition: ivectorpointer.h:296
reference emplace_back(parameter_t value)
Definition: ivectorpointer.h:357
const_pointer data() const
Definition: ivectorpointer.h:305
iterator erase(const_iterator first, const_iterator last)
Definition: ivectorpointer.h:445
void clear()
Clears the vector.
Definition: ivectorpointer.h:337
void resize(size_t new_size)
Definition: ivectorpointer.h:188
Definition: ivectorpointer.h:49
Definition: pvoidvector.h:55
bitset_ext
Definition: absolute.h:38
bool operator>(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition: array.h:684
bool operator>=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition: array.h:696
ETL_CONSTEXPR TContainer::const_iterator cbegin(const TContainer &container)
Definition: iterator.h:951
bool operator!=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition: array.h:645
etl::ivector< T >::difference_type erase(etl::ivector< T > &v, const U &value)
erase
Definition: vector.h:1805
bool operator==(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition: array.h:633
ETL_CONSTEXPR TContainer::iterator begin(TContainer &container)
Definition: iterator.h:931
ETL_CONSTEXPR TContainer::const_iterator cend(const TContainer &container)
Definition: iterator.h:981
bool operator<(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition: array.h:657
bool operator<=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition: array.h:672
ETL_CONSTEXPR TContainer::iterator end(TContainer &container)
Definition: iterator.h:961