34 using Comparer =
int (*)(
const Element& lhs,
const Element& rhs);
45 using V =
typename std::conditional<is_const, const Vector, Vector>::type;
46 using E =
typename std::conditional<is_const, const Element, Element>::type;
50 Iterator(
V& vector,
unsigned index) : vector(vector), index(index)
76 return &vector == &rhs.vector && index == rhs.index;
84 template <
typename U = Element>
typename std::enable_if<!is_const, U&>::type
operator*()
100 Vector(
unsigned int initialCapacity = 10,
unsigned int capacityIncrement = 10) :
_increment(capacityIncrement)
102 _data.allocate(initialCapacity);
130 int indexOf(
const Element& elem)
const;
158 void copyInto(Element* array)
const;
160 bool add(
const Element& obj)
193 bool setSize(
unsigned int newSize);
215 bool remove(
unsigned int index)
221 bool setElementAt(
const Element& obj,
unsigned int index);
223 const Element&
get(
unsigned int index)
const 253 std::swap(
_data, other._data);
254 std::swap(
_size, other._size);
263 return Iterator<false>(*
this, 0);
268 return Iterator<false>(*
this,
count());
273 return Iterator<true>(*
this, 0);
276 const Iterator<true>
end()
const 278 return Iterator<true>(*
this,
count());
303 for(
unsigned int i = 0; i <
_size; i++) {
310 if(array ==
nullptr) {
314 for(
unsigned int i = 0; i <
_size; i++) {
321 for(
unsigned int i = 0; i <
_size; i++) {
322 if(
_data[i] == elem) {
337 unsigned int i =
_size;
341 if(
_data[i] == elem) {
369 if(
_data.size >= minCapacity) {
374 return _data.allocate(newCapacity);
390 if(!
_data.insert(index, obj)) {
426 _data.trim(newSize,
false);
434 for(
unsigned j = 1; j <
_size; j++) {
436 Element& keyRef =
_data[j];
439 for(i = j - 1; (i >= 0) && compareFunction(
_data[i], keyRef) > 0; i--) {
typename std::conditional< std::is_scalar< T >::value, ScalarList< T >, ObjectList< T > >::type List
Definition: WiringList.h:182
Iterator operator++(int)
Definition: WVector.h:60
int lastIndexOf(const Element &elem) const
Definition: WVector.h:330
E & operator*() const
Definition: WVector.h:89
void trimToSize()
Reduce capacity to match current size.
Definition: WVector.h:198
ElementList _data
Definition: WVector.h:289
bool contains(const Element &elem) const
Definition: WVector.h:116
unsigned int _increment
Definition: WVector.h:288
int indexOf(const Element &elem) const
Definition: WVector.h:319
Vector(const Vector &rhv)
Definition: WVector.h:105
Iterator< false > end()
Definition: WVector.h:266
wiring_private::List< Parameter > ElementList
Definition: WVector.h:285
Definition: Countable.h:19
Vector class template.
Definition: WVector.h:31
const Vector< Element > & operator=(const Vector< Element > &rhv)
Definition: WVector.h:241
unsigned int capacity() const
Definition: WVector.h:111
const Vector< Element > & operator=(Vector< Element > &&other) noexcept
Definition: WVector.h:249
bool ensureCapacity(unsigned int minCapacity)
Definition: WVector.h:367
bool operator!=(const Iterator &rhs) const
Definition: WVector.h:79
bool insertElementAt(const Element &obj, unsigned int index)
Definition: WVector.h:377
bool removeElementAt(unsigned int index)
Definition: WVector.h:398
Element * pointer
Definition: WVector.h:42
bool add(const Element &obj)
Definition: WVector.h:160
bool isEmpty() const
Definition: WVector.h:132
Element value_type
Definition: WVector.h:40
Element & reference
Definition: WVector.h:43
Iterator & operator++()
Definition: WVector.h:54
const Element & elementAt(unsigned int index) const
Definition: WVector.h:205
unsigned int count() const override
Definition: WVector.h:148
bool setSize(unsigned int newSize)
Reduce or increase number of items.
Definition: WVector.h:420
void sort(Comparer compareFunction)
Definition: WVector.h:431
std::ptrdiff_t difference_type
Definition: WVector.h:41
Iterator< false > begin()
Definition: WVector.h:261
typename std::conditional< is_const, const Element, Element >::type E
Definition: WVector.h:46
std::enable_if<!is_const, U & >::type operator*()
Definition: WVector.h:84
bool removeElement(const Element &obj)
Definition: WVector.h:181
const Element & lastElement() const
Definition: WVector.h:137
bool operator==(const Iterator &rhs) const
Definition: WVector.h:74
void size_t const void * key
Definition: blake2s.h:33
void copyFrom(const Vector &rhv)
Definition: WVector.h:292
void removeAllElements()
Definition: WVector.h:175
int(*)(const Parameter &lhs, const Parameter &rhs) Comparer
Definition: WVector.h:34
const Element & operator[](unsigned int index) const override
Definition: WVector.h:228
Iterator(const Iterator &)=default
unsigned int _size
Definition: WVector.h:287
bool setElementAt(const Element &obj, unsigned int index)
Definition: WVector.h:410
void clear()
Definition: WVector.h:168
std::random_access_iterator_tag iterator_category
Definition: WVector.h:39
Iterator operator+=(size_t distance)
Definition: WVector.h:67
Vector(unsigned int initialCapacity=10, unsigned int capacityIncrement=10)
Definition: WVector.h:100
const Element & firstElement() const
Definition: WVector.h:121
unsigned int size() const
Definition: WVector.h:153
bool addElement(const Element &obj)
Definition: WVector.h:349
const Iterator< true > end() const
Definition: WVector.h:276
const Iterator< true > begin() const
Definition: WVector.h:271
Iterator(V &vector, unsigned index)
Definition: WVector.h:50
typename std::conditional< is_const, const Vector, Vector >::type V
Definition: WVector.h:45
void copyInto(Element *array) const
Definition: WVector.h:308
Element & operator[](unsigned int index) override
Definition: WVector.h:233