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);
210 reference operator [](
size_t i)
212 return reference(base_t::operator[](i));
220 const_reference operator [](
size_t i)
const
222 return const_reference(base_t::operator[](i));
231 reference
at(
size_t i)
233 return reference(base_t::at(i));
242 const_reference
at(
size_t i)
const
244 return const_reference(base_t::at(i));
253 return reference(base_t::front());
262 return const_reference(base_t::front());
271 return reference(base_t::back());
280 return const_reference(base_t::back());
289 return pointer(base_t::data());
298 return const_pointer(base_t::data());
308 template <
typename TIterator>
309 void assign(TIterator first, TIterator last)
311 base_t::assign(first, last);
322 base_t::assign(n, value);
340 base_t::push_back(value);
350 base_t::emplace_back(value);
368 iterator
insert(iterator position, parameter_t value)
370 return iterator(base_t::insert(base_t::iterator(position), value));
376 iterator
emplace(iterator position, parameter_t value)
378 return iterator(base_t::emplace(base_t::iterator(position), value));
388 void insert(iterator position,
size_t n, parameter_t value)
390 base_t::insert(base_t::iterator(position), n, value);
400 template <
class TIterator>
401 void insert(iterator position, TIterator first, TIterator last)
403 base_t::insert(base_t::iterator(position), first, last);
413 return iterator(base_t::erase(base_t::iterator(i_element)));
424 iterator
erase(iterator first, iterator last)
426 return iterator(base_t::erase(base_t::iterator(first), base_t::iterator(last)));
434 base_t::operator = (rhs);
439 #if ETL_CPP11_SUPPORTED
445 (void)base_t::operator = (etl::move(rhs));
451 #ifdef ETL_IVECTOR_REPAIR_ENABLE
455 virtual void repair() = 0;
464 :
pvoidvector(reinterpret_cast<void**>(p_buffer_), MAX_SIZE_)
469 template <
typename T>
474 typedef const T* value_type;
475 typedef value_type& reference;
476 typedef const value_type& const_reference;
477 typedef value_type* pointer;
478 typedef const value_type* const_pointer;
479 typedef value_type* iterator;
480 typedef const value_type* const_iterator;
481 typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
482 typedef ETL_OR_STD::reverse_iterator<const_iterator> const_reverse_iterator;
483 typedef size_t size_type;
484 typedef typename etl::iterator_traits<iterator>::difference_type difference_type;
488 typedef value_type parameter_t;
527 const_iterator
end()
const
565 return const_reverse_iterator(const_iterator(
base_t::end()));
581 const_reverse_iterator
rend()
const
583 return const_reverse_iterator(const_iterator(
base_t::begin()));
592 return const_reverse_iterator(const_iterator(
base_t::cend()));
599 const_reverse_iterator
crend()
const
612 base_t::resize(new_size);
622 void resize(
size_t new_size, value_type value)
624 base_t::resize(new_size,
const_cast<T*
>(value));
632 reference operator [](
size_t i)
634 return reference(base_t::operator[](i));
642 const_reference operator [](
size_t i)
const
644 return const_reference(base_t::operator[](i));
653 reference
at(
size_t i)
655 return reference(base_t::at(i));
664 const_reference
at(
size_t i)
const
666 return const_reference(base_t::at(i));
675 return reference(base_t::front());
684 return const_reference(base_t::front());
693 return reference(base_t::back());
702 return const_reference(base_t::back());
711 return pointer(base_t::data());
720 return const_pointer(base_t::data());
730 template <
typename TIterator>
731 void assign(TIterator first, TIterator last)
733 base_t::assign(first, last);
744 base_t::assign(n,
const_cast<T*
>(value));
762 base_t::push_back(
const_cast<T*
>(value));
780 iterator
insert(iterator position, parameter_t value)
782 return iterator(base_t::insert(base_t::iterator(position),
const_cast<T*
>(value)));
792 void insert(iterator position,
size_t n, parameter_t value)
794 base_t::insert(base_t::iterator(position), n,
const_cast<T*
>(value));
804 template <
class TIterator>
805 void insert(iterator position, TIterator first, TIterator last)
807 base_t::insert(base_t::iterator(position), first, last);
817 return iterator(base_t::erase(base_t::iterator(i_element)));
828 iterator
erase(iterator first, iterator last)
830 return iterator(base_t::erase(base_t::iterator(first), base_t::iterator(last)));
838 base_t::operator = (rhs);
843 #if ETL_CPP11_SUPPORTED
849 (void)base_t::operator = (etl::move(rhs));
855 #ifdef ETL_IVECTOR_REPAIR_ENABLE
859 virtual void repair() = 0;
867 ivector(
const T** p_buffer_,
size_t MAX_SIZE_)
868 :
pvoidvector(reinterpret_cast<void**>(const_cast<T**>(p_buffer_)), MAX_SIZE_)
880 template <
typename T>
883 return pvoidvector_equal(lhs, rhs);
893 template <
typename T>
896 return pvoidvector_not_equal(lhs, rhs);
906 template <
typename T>
909 return pvoidvector_less_than(lhs, rhs);
919 template <
typename T>
922 return pvoidvector_greater_than(lhs, rhs);
932 template <
typename T>
935 return pvoidvector_less_than_equal(lhs, rhs);
945 template <
typename T>
948 return pvoidvector_greater_than_equal(lhs, rhs);
const_reference front() const
Definition: ivectorpointer.h:682
const_reverse_iterator rbegin() const
Definition: ivectorpointer.h:563
void resize(size_t new_size, value_type value)
Definition: ivectorpointer.h:622
reference front()
Definition: ivectorpointer.h:673
void resize(size_t new_size)
Definition: ivectorpointer.h:610
const_reference back() const
Definition: ivectorpointer.h:700
void insert(iterator position, size_t n, parameter_t value)
Definition: ivectorpointer.h:792
iterator erase(iterator i_element)
Definition: ivectorpointer.h:815
reverse_iterator rbegin()
Definition: ivectorpointer.h:554
ivector(const T **p_buffer_, size_t MAX_SIZE_)
Constructor.
Definition: ivectorpointer.h:867
iterator insert(iterator position, parameter_t value)
Definition: ivectorpointer.h:780
const_iterator cbegin() const
Definition: ivectorpointer.h:536
void insert(iterator position, TIterator first, TIterator last)
Definition: ivectorpointer.h:805
pointer data()
Definition: ivectorpointer.h:709
void push_back(parameter_t value)
Definition: ivectorpointer.h:760
reference at(size_t i)
Definition: ivectorpointer.h:653
const_iterator cend() const
Definition: ivectorpointer.h:545
iterator erase(iterator first, iterator last)
Definition: ivectorpointer.h:828
const_pointer data() const
Definition: ivectorpointer.h:718
iterator end()
Definition: ivectorpointer.h:518
reference back()
Definition: ivectorpointer.h:691
const_reverse_iterator crbegin() const
Definition: ivectorpointer.h:590
const_reverse_iterator crend() const
Definition: ivectorpointer.h:599
const_reference at(size_t i) const
Definition: ivectorpointer.h:664
void pop_back()
Definition: ivectorpointer.h:769
void assign(TIterator first, TIterator last)
Definition: ivectorpointer.h:731
void clear()
Clears the vector.
Definition: ivectorpointer.h:750
const_iterator end() const
Definition: ivectorpointer.h:527
const_reverse_iterator rend() const
Definition: ivectorpointer.h:581
void assign(size_t n, parameter_t value)
Definition: ivectorpointer.h:742
reverse_iterator rend()
Definition: ivectorpointer.h:572
const_iterator begin() const
Definition: ivectorpointer.h:509
iterator begin()
Definition: ivectorpointer.h:500
ETL_CONSTEXPR TContainer::const_iterator cbegin(const TContainer &container)
Definition: container.h:69
ETL_CONSTEXPR TContainer::iterator begin(TContainer &container)
Definition: container.h:49
ETL_CONSTEXPR TContainer::const_iterator cend(const TContainer &container)
Definition: container.h:119
ETL_CONSTEXPR TContainer::iterator end(TContainer &container)
Definition: container.h:99
reference front()
Definition: ivectorpointer.h:251
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:309
void push_back(parameter_t value)
Definition: ivectorpointer.h:338
const_iterator begin() const
Definition: ivectorpointer.h:87
const_iterator cbegin() const
Definition: ivectorpointer.h:114
iterator emplace(iterator position, parameter_t value)
Emplaces a value to the vector at the specified position.
Definition: ivectorpointer.h:376
void pop_back()
Definition: ivectorpointer.h:357
const_reference front() const
Definition: ivectorpointer.h:260
void assign(size_t n, parameter_t value)
Definition: ivectorpointer.h:320
void insert(iterator position, TIterator first, TIterator last)
Definition: ivectorpointer.h:401
reference back()
Definition: ivectorpointer.h:269
const_reference at(size_t i) const
Definition: ivectorpointer.h:242
const_reverse_iterator crend() const
Definition: ivectorpointer.h:177
const_reference back() const
Definition: ivectorpointer.h:278
void emplace_back(parameter_t value)
Definition: ivectorpointer.h:348
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
iterator insert(iterator position, parameter_t value)
Definition: ivectorpointer.h:368
const_iterator cend() const
Definition: ivectorpointer.h:123
reverse_iterator rbegin()
Definition: ivectorpointer.h:132
reference at(size_t i)
Definition: ivectorpointer.h:231
iterator erase(iterator first, iterator last)
Definition: ivectorpointer.h:424
iterator erase(iterator i_element)
Definition: ivectorpointer.h:411
iterator end()
Definition: ivectorpointer.h:96
ivector(T **p_buffer_, size_t MAX_SIZE_)
Constructor.
Definition: ivectorpointer.h:463
void insert(iterator position, size_t n, parameter_t value)
Definition: ivectorpointer.h:388
const_reverse_iterator crbegin() const
Definition: ivectorpointer.h:168
iterator begin()
Definition: ivectorpointer.h:78
pointer data()
Definition: ivectorpointer.h:287
const_pointer data() const
Definition: ivectorpointer.h:296
void clear()
Clears the vector.
Definition: ivectorpointer.h:328
void resize(size_t new_size)
Definition: ivectorpointer.h:188
Definition: ivectorpointer.h:49
Definition: pvoidvector.h:60
Definition: absolute.h:37
bool operator>(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition: array.h:633
bool operator>=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition: array.h:645
bool operator!=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition: array.h:594
bool operator==(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition: array.h:582
bool operator<(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition: array.h:606
bool operator<=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition: array.h:621