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
53 typedef T* value_type;
54 typedef value_type& reference;
55 typedef const value_type& const_reference;
56 typedef value_type* pointer;
57 typedef const value_type* const_pointer;
58 typedef value_type* iterator;
59 typedef const value_type* const_iterator;
60 typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
61 typedef ETL_OR_STD::reverse_iterator<const_iterator> const_reverse_iterator;
62 typedef size_t size_type;
63 typedef typename etl::iterator_traits<iterator>::difference_type difference_type;
67 typedef value_type parameter_t;
106 const_iterator
end()
const
144 return const_reverse_iterator(const_iterator(
base_t::end()));
160 const_reverse_iterator
rend()
const
162 return const_reverse_iterator(const_iterator(
base_t::begin()));
171 return const_reverse_iterator(const_iterator(
base_t::cend()));
178 const_reverse_iterator
crend()
const
202 void resize(
size_t new_size, value_type value)
223 return reference(base_t::operator[](i));
233 return const_reference(base_t::operator[](i));
243 reference
at(
size_t i)
255 const_reference
at(
size_t i)
const
322 template <
typename TIterator>
323 void assign(TIterator first, TIterator last)
401 iterator
insert(const_iterator position, parameter_t value)
403 return iterator(
base_t::insert(base_t::iterator(position), value));
411 return iterator(
base_t::emplace(base_t::iterator(position), ETL_NULLPTR));
417 iterator
emplace(const_iterator position, parameter_t value)
430 void insert(const_iterator position,
size_t n, parameter_t value)
443 template <
class TIterator>
444 void insert(const_iterator position, TIterator first, TIterator last)
466 iterator
erase(const_iterator i_element)
468 return iterator(
base_t::erase(base_t::const_iterator(i_element)));
480 iterator
erase(const_iterator first, const_iterator last)
482 return iterator(
base_t::erase(base_t::const_iterator(first), base_t::const_iterator(last)));
502 etl::swap_ranges(smaller.
begin(), smaller.
end(), larger.
begin());
504 typename ivector<T*>::iterator larger_itr = etl::next(larger.
begin(),
static_cast<ptrdiff_t
>(smaller.
size()));
508 larger.
erase(larger_itr, larger.
end());
527 (void)base_t::operator=(etl::move(rhs));
533#ifdef ETL_IVECTOR_REPAIR_ENABLE
537 virtual void repair() = 0;
546 :
pvoidvector(reinterpret_cast<void**>(p_buffer_), MAX_SIZE_)
551 template <
typename T>
556 typedef const T* value_type;
557 typedef value_type& reference;
558 typedef const value_type& const_reference;
559 typedef value_type* pointer;
560 typedef const value_type* const_pointer;
561 typedef value_type* iterator;
562 typedef const value_type* const_iterator;
563 typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
564 typedef ETL_OR_STD::reverse_iterator<const_iterator> const_reverse_iterator;
565 typedef size_t size_type;
566 typedef typename etl::iterator_traits<iterator>::difference_type difference_type;
570 typedef value_type parameter_t;
609 const_iterator
end()
const
647 return const_reverse_iterator(const_iterator(
base_t::end()));
663 const_reverse_iterator
rend()
const
665 return const_reverse_iterator(const_iterator(
base_t::begin()));
674 return const_reverse_iterator(const_iterator(
base_t::cend()));
681 const_reverse_iterator
crend()
const
705 void resize(
size_t new_size, value_type value)
726 return reference(base_t::operator[](i));
736 return const_reference(base_t::operator[](i));
746 reference
at(
size_t i)
758 const_reference
at(
size_t i)
const
825 template <
typename TIterator>
826 void assign(TIterator first, TIterator last)
878 iterator
insert(const_iterator position, parameter_t value)
880 return iterator(
base_t::insert(base_t::iterator(position),
const_cast<T*
>(value)));
891 void insert(const_iterator position,
size_t n, parameter_t value)
893 base_t::insert(base_t::iterator(position), n,
const_cast<T*
>(value));
904 template <
class TIterator>
905 void insert(const_iterator position, TIterator first, TIterator last)
927 iterator
erase(const_iterator i_element)
941 iterator
erase(const_iterator first, const_iterator last)
943 return iterator(
base_t::erase(base_t::iterator(first), base_t::iterator(last)));
963 etl::swap_ranges(smaller.
begin(), smaller.
end(), larger.
begin());
965 typename ivector<const T*>::iterator larger_itr = etl::next(larger.
begin(),
static_cast<ptrdiff_t
>(smaller.
size()));
969 larger.
erase(larger_itr, larger.
end());
988 (void)base_t::operator=(etl::move(rhs));
994#ifdef ETL_IVECTOR_REPAIR_ENABLE
998 virtual void repair() = 0;
1007 :
pvoidvector(reinterpret_cast<void**>(const_cast<T**>(p_buffer_)), MAX_SIZE_)
1019 template <
typename T>
1022 return pvoidvector_equal(lhs, rhs);
1032 template <
typename T>
1035 return pvoidvector_not_equal(lhs, rhs);
1045 template <
typename T>
1048 return pvoidvector_less_than(lhs, rhs);
1058 template <
typename T>
1061 return pvoidvector_greater_than(lhs, rhs);
1072 template <
typename T>
1075 return pvoidvector_less_than_equal(lhs, rhs);
1086 template <
typename T>
1089 return pvoidvector_greater_than_equal(lhs, rhs);
1100 inline bool pvoidvector_not_equal(
const etl::pvoidvector& lhs,
const etl::pvoidvector& rhs)
1105 inline bool pvoidvector_less_than(
const etl::pvoidvector& lhs,
const etl::pvoidvector& rhs)
1110 inline bool pvoidvector_greater_than(
const etl::pvoidvector& lhs,
const etl::pvoidvector& rhs)
1115 inline bool pvoidvector_less_than_equal(
const etl::pvoidvector& lhs,
const etl::pvoidvector& rhs)
1120 inline bool pvoidvector_greater_than_equal(
const etl::pvoidvector& lhs,
const etl::pvoidvector& rhs)
const_reference front() const
Definition ivectorpointer.h:776
const_reverse_iterator rbegin() const
Definition ivectorpointer.h:645
void resize(size_t new_size, value_type value)
Definition ivectorpointer.h:705
reference front()
Definition ivectorpointer.h:767
void resize(size_t new_size)
Definition ivectorpointer.h:692
void insert(const_iterator position, TIterator first, TIterator last)
Definition ivectorpointer.h:905
const_reference back() const
Definition ivectorpointer.h:794
iterator erase(iterator i_element)
Definition ivectorpointer.h:916
iterator insert(const_iterator position, parameter_t value)
Definition ivectorpointer.h:878
reverse_iterator rbegin()
Definition ivectorpointer.h:636
ivector(const T **p_buffer_, size_t MAX_SIZE_)
Constructor.
Definition ivectorpointer.h:1006
void uninitialized_resize(size_t new_size)
Definition ivectorpointer.h:714
const_iterator cbegin() const
Definition ivectorpointer.h:618
iterator erase(const_iterator first, const_iterator last)
Definition ivectorpointer.h:941
pointer data()
Definition ivectorpointer.h:803
void push_back(parameter_t value)
Definition ivectorpointer.h:857
ivector & operator=(const ivector &rhs)
Assignment operator.
Definition ivectorpointer.h:975
reference at(size_t i)
Definition ivectorpointer.h:746
iterator erase(const_iterator i_element)
Definition ivectorpointer.h:927
const_iterator cend() const
Definition ivectorpointer.h:627
const_pointer data() const
Definition ivectorpointer.h:812
iterator end()
Definition ivectorpointer.h:600
reference back()
Definition ivectorpointer.h:785
void insert(const_iterator position, size_t n, parameter_t value)
Definition ivectorpointer.h:891
const_reverse_iterator crbegin() const
Definition ivectorpointer.h:672
const_reverse_iterator crend() const
Definition ivectorpointer.h:681
const_reference at(size_t i) const
Definition ivectorpointer.h:758
void pop_back()
Definition ivectorpointer.h:866
void assign(TIterator first, TIterator last)
Definition ivectorpointer.h:826
void clear()
Clears the vector.
Definition ivectorpointer.h:846
const_iterator end() const
Definition ivectorpointer.h:609
const_reference operator[](size_t i) const
Definition ivectorpointer.h:734
reference operator[](size_t i)
Definition ivectorpointer.h:724
const_reverse_iterator rend() const
Definition ivectorpointer.h:663
void swap(ivector< const T * > &other)
Definition ivectorpointer.h:951
void assign(size_t n, parameter_t value)
Definition ivectorpointer.h:838
reverse_iterator rend()
Definition ivectorpointer.h:654
const_iterator begin() const
Definition ivectorpointer.h:591
iterator begin()
Definition ivectorpointer.h:582
etl::enable_if<!etl::is_pointer< TIterator >::value, void >::type assign(TIterator first, TIterator last)
Definition pvoidvector.h:342
iterator begin()
Definition vector.h:99
reference front()
Definition ivectorpointer.h:264
reverse_iterator rend()
Definition ivectorpointer.h:151
const_reverse_iterator rbegin() const
Definition ivectorpointer.h:142
iterator begin()
Definition pvoidvector.h:76
void emplace_back(value_type value)
Definition pvoidvector.h:425
void assign(TIterator first, TIterator last)
Definition ivectorpointer.h:323
void push_back(parameter_t value)
Definition ivectorpointer.h:354
const_iterator begin() const
Definition ivectorpointer.h:88
const_iterator cbegin() const
Definition ivectorpointer.h:115
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
void insert(const_iterator position, TIterator first, TIterator last)
Definition ivectorpointer.h:444
const_reference operator[](size_t i) const
Definition ivectorpointer.h:231
void pop_back()
Definition ivectorpointer.h:389
const_reference front() const
Definition ivectorpointer.h:273
void assign(size_t n, parameter_t value)
Definition ivectorpointer.h:335
reference operator[](size_t i)
Definition ivectorpointer.h:221
reference back()
Definition ivectorpointer.h:282
const_reference at(size_t i) const
Definition ivectorpointer.h:255
const_reverse_iterator crend() const
Definition ivectorpointer.h:178
iterator emplace(const_iterator position, parameter_t value)
Emplaces a value to the vector at the specified position.
Definition ivectorpointer.h:417
const_reference back() const
Definition ivectorpointer.h:291
void resize(size_t new_size, value_type value)
Definition ivectorpointer.h:202
iterator emplace(const_iterator position)
Definition pvoidvector.h:488
etl::pvoidvector & operator=(const etl::pvoidvector &rhs)
Assignment operator.
Definition pvoidvector.h:679
const_reverse_iterator rend() const
Definition ivectorpointer.h:160
const_iterator end() const
Definition ivectorpointer.h:106
iterator end()
Definition vector.h:117
const_iterator cend() const
Definition ivectorpointer.h:124
iterator insert(const_iterator position, value_type value)
Definition pvoidvector.h:453
void uninitialized_resize(size_t new_size)
Definition ivectorpointer.h:211
void clear()
Clears the vector.
Definition pvoidvector.h:401
reverse_iterator rbegin()
Definition ivectorpointer.h:133
reference at(size_t i)
Definition ivectorpointer.h:243
void resize(size_t new_size)
Definition pvoidvector.h:186
void insert(const_iterator position, size_t n, parameter_t value)
Definition ivectorpointer.h:430
iterator erase(iterator i_element)
Definition ivectorpointer.h:455
iterator erase(const_iterator i_element)
Definition ivectorpointer.h:466
iterator end()
Definition ivectorpointer.h:97
reference emplace_back()
Definition ivectorpointer.h:365
ivector(T **p_buffer_, size_t MAX_SIZE_)
Constructor.
Definition ivectorpointer.h:545
const_reverse_iterator crbegin() const
Definition ivectorpointer.h:169
void pop_back()
Definition pvoidvector.h:436
iterator emplace(const_iterator position)
Emplaces a value to the vector at the specified position.
Definition ivectorpointer.h:409
reference back()
Definition pvoidvector.h:299
iterator end()
Definition pvoidvector.h:94
iterator begin()
Definition ivectorpointer.h:79
void uninitialized_resize(size_t new_size)
Definition pvoidvector.h:220
iterator insert(const_iterator position, parameter_t value)
Definition ivectorpointer.h:401
reference front()
Definition pvoidvector.h:279
pointer data()
Definition ivectorpointer.h:300
reference emplace_back(parameter_t value)
Definition ivectorpointer.h:378
pvoidvector(void **p_buffer_, size_t MAX_SIZE)
Constructor.
Definition pvoidvector.h:750
const_pointer data() const
Definition ivectorpointer.h:309
void push_back(value_type value)
Definition pvoidvector.h:412
const_iterator cend() const
Definition pvoidvector.h:121
iterator erase(const_iterator first, const_iterator last)
Definition ivectorpointer.h:480
const_iterator cbegin() const
Definition pvoidvector.h:112
size_type size() const
Definition vector.h:1040
iterator erase(iterator i_element)
Definition vector.h:911
ivector & operator=(const ivector &rhs)
Assignment operator.
Definition ivectorpointer.h:514
void clear()
Clears the vector.
Definition ivectorpointer.h:343
void swap(ivector< T * > &other)
Definition ivectorpointer.h:490
void resize(size_t new_size)
Definition ivectorpointer.h:189
reference at(size_t i)
Definition pvoidvector.h:256
Definition pvoidvector.h:55
Definition vector_base.h:66
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
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
ETL_NODISCARD ETL_CONSTEXPR14 etl::back_insert_iterator< TContainer > back_inserter(TContainer &container)
Creates a back_insert_iterator from a container.
Definition iterator.h:673
ETL_CONSTEXPR TContainer::size_type size(const TContainer &container)
Definition iterator.h:1192
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