Go to the documentation of this file.
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);
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());
295 if(!_data.allocate(rhv.
_data.size)) {
296 _size = _increment = 0;
303 for(
unsigned int i = 0; i < _size; i++) {
304 _data[i] = rhv.
_data[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) {
351 if(!ensureCapacity(_size + 1)) {
354 _data[_size++] = obj;
360 if(!ensureCapacity(_size + 1)) {
363 _data[_size++] = objp;
369 if(_data.size >= minCapacity) {
373 auto newCapacity = std::max(minCapacity, _data.size + _increment);
374 return _data.allocate(newCapacity);
380 return addElement(obj);
386 if(!ensureCapacity(_size + 1)) {
390 if(!_data.insert(index, obj)) {
422 if(!ensureCapacity(newSize)) {
426 _data.trim(newSize,
false);
427 _size = std::min(_size, newSize);
434 for(
unsigned j = 1; j < _size; j++) {
435 auto key = _data.values[j];
436 Element& keyRef = _data[j];
439 for(i = j - 1; (i >= 0) && compareFunction(_data[i], keyRef) > 0; i--) {
440 _data.values[i + 1] = _data.values[i];
443 _data.values[i + 1] =
key;
std::ptrdiff_t difference_type
Definition: WVector.h:41
int indexOf(const Element &elem) const
Definition: WVector.h:319
bool add(const Element &obj)
Definition: WVector.h:160
Element value_type
Definition: WVector.h:40
bool addElement(const Element &obj)
Definition: WVector.h:349
Iterator operator+=(size_t distance)
Definition: WVector.h:67
typename std::conditional< is_const, const Element, Element >::type E
Definition: WVector.h:46
unsigned int size() const
Definition: WVector.h:153
unsigned int capacity() const
Definition: WVector.h:111
typename std::conditional< std::is_scalar< T >::value, ScalarList< T >, ObjectList< T > >::type List
Definition: WiringList.h:190
unsigned int count() const override
Definition: WVector.h:148
Iterator operator++(int)
Definition: WVector.h:60
void copyInto(Element *array) const
Definition: WVector.h:308
typename std::conditional< is_const, const Vector, Vector >::type V
Definition: WVector.h:45
const Iterator< true > end() const
Definition: WVector.h:276
ElementList _data
Definition: WVector.h:289
bool setElementAt(const Element &obj, unsigned int index)
Definition: WVector.h:410
Iterator< false > begin()
Definition: WVector.h:261
Definition: Countable.h:19
const Vector< Element > & operator=(const Vector< Element > &rhv)
Definition: WVector.h:241
Iterator(V &vector, unsigned index)
Definition: WVector.h:50
Element & reference
Definition: WVector.h:43
const Element & lastElement() const
Definition: WVector.h:137
bool remove(unsigned int index)
Definition: WVector.h:215
unsigned int _size
Definition: WVector.h:287
bool ensureCapacity(unsigned int minCapacity)
Definition: WVector.h:367
E & operator*() const
Definition: WVector.h:89
const Element & operator[](unsigned int index) const override
Definition: WVector.h:228
void copyFrom(const Vector &rhv)
Definition: WVector.h:292
Vector(const Vector &rhv)
Definition: WVector.h:105
Iterator< false > end()
Definition: WVector.h:266
const Element & elementAt(unsigned int index) const
Definition: WVector.h:205
std::enable_if<!is_const, U & >::type operator*()
Definition: WVector.h:84
Element * pointer
Definition: WVector.h:42
void removeAllElements()
Definition: WVector.h:175
void clear()
Definition: WVector.h:168
bool contains(const Element &elem) const
Definition: WVector.h:116
Iterator & operator++()
Definition: WVector.h:54
unsigned int _increment
Definition: WVector.h:288
std::random_access_iterator_tag iterator_category
Definition: WVector.h:39
void sort(Comparer compareFunction)
Definition: WVector.h:431
void size_t const void * key
Definition: blake2s.h:33
wiring_private::List< Parameter > ElementList
Definition: WVector.h:285
bool operator!=(const Iterator &rhs) const
Definition: WVector.h:79
bool setSize(unsigned int newSize)
Reduce or increase number of items.
Definition: WVector.h:420
int(*)(const Parameter &lhs, const Parameter &rhs) Comparer
Definition: WVector.h:34
bool removeElementAt(unsigned int index)
Definition: WVector.h:398
bool insertElementAt(const Element &obj, unsigned int index)
Definition: WVector.h:377
const Vector< Element > & operator=(Vector< Element > &&other) noexcept
Definition: WVector.h:249
Vector(unsigned int initialCapacity=10, unsigned int capacityIncrement=10)
Definition: WVector.h:100
bool operator==(const Iterator &rhs) const
Definition: WVector.h:74
Iterator(const Iterator &)=default
bool isEmpty() const
Definition: WVector.h:132
const Iterator< true > begin() const
Definition: WVector.h:271
const Element & firstElement() const
Definition: WVector.h:121
const Element & get(unsigned int index) const
Definition: WVector.h:223
bool removeElement(const Element &obj)
Definition: WVector.h:181
Element & operator[](unsigned int index) override
Definition: WVector.h:233
Vector class template.
Definition: WVector.h:31
void trimToSize()
Reduce capacity to match current size.
Definition: WVector.h:198
int lastIndexOf(const Element &elem) const
Definition: WVector.h:330