34 using Comparer =
int (*)(
const Element& lhs,
const Element& rhs);
36 template <
bool is_const>
class Iterator :
public std::iterator<std::random_access_iterator_tag, Element>
39 using V =
typename std::conditional<is_const, const Vector, Vector>::type;
40 using E =
typename std::conditional<is_const, const Element, Element>::type;
44 Iterator(
V& vector,
unsigned index) : vector(vector), index(index)
70 return &vector == &rhs.vector && index == rhs.index;
78 template <
typename U = Element>
typename std::enable_if<!is_const, U&>::type
operator*()
94 Vector(
unsigned int initialCapacity = 10,
unsigned int capacityIncrement = 10) :
_increment(capacityIncrement)
96 _data.allocate(initialCapacity);
124 int indexOf(
const Element& elem)
const;
152 void copyInto(Element* array)
const;
154 bool add(
const Element& obj)
187 bool setSize(
unsigned int newSize);
209 bool remove(
unsigned int index)
215 bool setElementAt(
const Element& obj,
unsigned int index);
217 const Element&
get(
unsigned int index)
const 247 std::swap(
_data, other._data);
248 std::swap(
_size, other._size);
257 return Iterator<false>(*
this, 0);
262 return Iterator<false>(*
this,
count());
267 return Iterator<true>(*
this, 0);
270 const Iterator<true>
end()
const 272 return Iterator<true>(*
this,
count());
297 for(
unsigned int i = 0; i <
_size; i++) {
304 if(array ==
nullptr) {
308 for(
unsigned int i = 0; i <
_size; i++) {
315 for(
unsigned int i = 0; i <
_size; i++) {
316 if(
_data[i] == elem) {
331 unsigned int i =
_size;
335 if(
_data[i] == elem) {
363 if(
_data.size >= minCapacity) {
368 return _data.allocate(newCapacity);
384 if(!
_data.insert(index, obj)) {
420 _data.trim(newSize,
false);
428 for(
unsigned j = 1; j <
_size; j++) {
430 Element& keyRef =
_data[j];
433 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:54
int lastIndexOf(const Element &elem) const
Definition: WVector.h:324
E & operator*() const
Definition: WVector.h:83
void trimToSize()
Reduce capacity to match current size.
Definition: WVector.h:192
ElementList _data
Definition: WVector.h:283
bool contains(const Element &elem) const
Definition: WVector.h:110
unsigned int _increment
Definition: WVector.h:282
int indexOf(const Element &elem) const
Definition: WVector.h:313
Vector(const Vector &rhv)
Definition: WVector.h:99
Iterator< false > end()
Definition: WVector.h:260
wiring_private::List< Parameter > ElementList
Definition: WVector.h:279
Definition: Countable.h:19
Vector class template.
Definition: WVector.h:31
const Vector< Element > & operator=(const Vector< Element > &rhv)
Definition: WVector.h:235
unsigned int capacity() const
Definition: WVector.h:105
const Vector< Element > & operator=(Vector< Element > &&other) noexcept
Definition: WVector.h:243
bool ensureCapacity(unsigned int minCapacity)
Definition: WVector.h:361
bool operator!=(const Iterator &rhs) const
Definition: WVector.h:73
bool insertElementAt(const Element &obj, unsigned int index)
Definition: WVector.h:371
bool removeElementAt(unsigned int index)
Definition: WVector.h:392
bool add(const Element &obj)
Definition: WVector.h:154
bool isEmpty() const
Definition: WVector.h:126
Iterator & operator++()
Definition: WVector.h:48
const Element & elementAt(unsigned int index) const
Definition: WVector.h:199
unsigned int count() const override
Definition: WVector.h:142
bool setSize(unsigned int newSize)
Reduce or increase number of items.
Definition: WVector.h:414
void sort(Comparer compareFunction)
Definition: WVector.h:425
Iterator< false > begin()
Definition: WVector.h:255
typename std::conditional< is_const, const Element, Element >::type E
Definition: WVector.h:40
std::enable_if<!is_const, U & >::type operator*()
Definition: WVector.h:78
bool removeElement(const Element &obj)
Definition: WVector.h:175
const Element & lastElement() const
Definition: WVector.h:131
bool operator==(const Iterator &rhs) const
Definition: WVector.h:68
void size_t const void * key
Definition: blake2s.h:33
void copyFrom(const Vector &rhv)
Definition: WVector.h:286
void removeAllElements()
Definition: WVector.h:169
int(*)(const Parameter &lhs, const Parameter &rhs) Comparer
Definition: WVector.h:34
const Element & operator[](unsigned int index) const override
Definition: WVector.h:222
Iterator(const Iterator &)=default
unsigned int _size
Definition: WVector.h:281
bool setElementAt(const Element &obj, unsigned int index)
Definition: WVector.h:404
void clear()
Definition: WVector.h:162
Iterator operator+=(size_t distance)
Definition: WVector.h:61
Vector(unsigned int initialCapacity=10, unsigned int capacityIncrement=10)
Definition: WVector.h:94
const Element & firstElement() const
Definition: WVector.h:115
unsigned int size() const
Definition: WVector.h:147
bool addElement(const Element &obj)
Definition: WVector.h:343
const Iterator< true > end() const
Definition: WVector.h:270
const Iterator< true > begin() const
Definition: WVector.h:265
Iterator(V &vector, unsigned index)
Definition: WVector.h:44
typename std::conditional< is_const, const Vector, Vector >::type V
Definition: WVector.h:39
void copyInto(Element *array) const
Definition: WVector.h:302
Element & operator[](unsigned int index) override
Definition: WVector.h:227