2#ifdef USE_INITIALIZER_LIST
3#include "InitializerList.h"
86#ifdef USE_INITIALIZER_LIST
89 Vector(std::initializer_list<T> iniList) {
92 for (
auto &obj : iniList) {
112 for (
int j = 0; j <
size; j++) {
134 for (
int j = 0; j < copyFrom.
size(); j++) {
143 for (
int j = 0; j < copyFrom.
size(); j++) {
153 this->
len = to - from;
155 for (
size_t j = 0; j < this->
len; j++) {
186 for (
int j =
len; j >= 0; j--) {
196 for (
int j =
len; j >= 0; j--) {
212 size_t newLen = v2 - v1;
216 for (
auto ptr = v1; ptr != v2; ptr++) {
224 for (
int j = 0; j < number; j++) {
245 assert(
p_data !=
nullptr);
253 for (
int j = 0; j < newSize; j++) {
266 int oldSize = this->
len;
269 return this->
len != oldSize;
284 int lenToEnd =
len - pos - 1;
288 memmove((
void *)&
p_data[pos], (
void *)(&
p_data[pos + 1]),
289 lenToEnd *
sizeof(T));
300 operator bool()
const {
return p_data !=
nullptr; }
303 for (
int j = 0; j <
size(); j++) {
304 if (
p_data[j] == obj)
return j;
321 other.bufferLen = temp_blen;
322 other.len = temp_len;
323 other.p_data = temp_data;
340 if (newSize <= 0)
return;
341 if (newSize >
max_capacity || this->p_data ==
nullptr || shrink) {
345 assert(
p_data !=
nullptr);
346 this->max_capacity = newSize;
347 if (oldData !=
nullptr) {
348 if (copy && this->len > 0) {
350 memmove((
void *)
p_data, (
void *)oldData,
len *
sizeof(T));
352 memset((
void *)oldData, 0,
len *
sizeof(T));
355 cleanup(oldData, newSize, oldBufferLen);
367 data =
new T[newSize];
373 if (oldData ==
nullptr)
return;
382 for (
int j = from; j < to; j++) {
Memory allocateator which uses malloc.
Definition: Allocator.h:21
void removeArray(T *obj, int len)
Definition: Allocator.h:52
T * createArray(int len)
Definition: Allocator.h:42
Lightweight iterator for tiny_dlna::Vector<T>.
Definition: Vector.h:33
Iterator(const Iterator ©From)
Definition: Vector.h:45
bool operator<(Iterator it)
Definition: Vector.h:74
T * operator->()
Definition: Vector.h:80
size_t pos()
Definition: Vector.h:82
Iterator operator--()
Definition: Vector.h:64
T & operator*()
Definition: Vector.h:79
T * getPtr()
Definition: Vector.h:81
size_t operator-(Iterator it)
Definition: Vector.h:83
bool operator>(Iterator it)
Definition: Vector.h:76
bool operator<=(Iterator it)
Definition: Vector.h:75
Iterator operator--(int n)
Definition: Vector.h:59
T * ptr
Definition: Vector.h:35
Iterator(T *parPtr, size_t pos)
Definition: Vector.h:40
Iterator operator+(int offset)
Definition: Vector.h:69
size_t pos_
Definition: Vector.h:36
bool operator!=(Iterator it)
Definition: Vector.h:78
Iterator operator++()
Definition: Vector.h:54
Iterator()
Definition: Vector.h:39
bool operator>=(Iterator it)
Definition: Vector.h:77
Iterator operator++(int n)
Definition: Vector.h:49
bool operator==(Iterator it)
Definition: Vector.h:73
Vector implementation which provides the most important methods as defined by std::vector....
Definition: Vector.h:21
virtual ~Vector()
Destructor.
Definition: Vector.h:161
void erase(int pos)
Definition: Vector.h:282
void resize_internal(int newSize, bool copy, bool shrink=false)
Definition: Vector.h:339
void swap(T &other)
Definition: Vector.h:311
Allocator * p_allocator
Definition: Vector.h:337
void clear()
Definition: Vector.h:165
void cleanup(T *data, int from, int to)
Definition: Vector.h:381
bool resize(int newSize, T value)
Definition: Vector.h:251
bool empty()
Definition: Vector.h:169
void assign(size_t number, T value)
Definition: Vector.h:221
Vector(Vector< T > &&moveFrom)
Move constructor.
Definition: Vector.h:118
Vector(T *from, T *to, Allocator &allocator=DefaultAllocator)
legacy constructor with pointer range
Definition: Vector.h:151
Vector(Allocator &allocator)
Constructor with only allocator.
Definition: Vector.h:106
void reset()
Definition: Vector.h:326
int size()
Definition: Vector.h:167
bool contains(T obj)
Definition: Vector.h:309
void push_back(T &&value)
Definition: Vector.h:171
T * newArray(int newSize)
Definition: Vector.h:362
T & operator[](int index)
Definition: Vector.h:244
void assign(Iterator v1, Iterator v2)
Definition: Vector.h:211
Iterator end()
Definition: Vector.h:276
bool resize(int newSize)
Definition: Vector.h:265
T & operator[](const int index) const
Definition: Vector.h:249
void swap(Vector< T > &in)
Definition: Vector.h:229
void pop_front()
Definition: Vector.h:209
void erase(Iterator it)
Definition: Vector.h:279
T & back()
Definition: Vector.h:274
Vector< T > & operator=(Vector< T > ©From)
copy operator
Definition: Vector.h:141
int indexOf(T obj)
Definition: Vector.h:302
void push_front(T &value)
Definition: Vector.h:183
Vector & operator=(Vector &&moveFrom)
Move operator.
Definition: Vector.h:124
void push_front(T &&value)
Definition: Vector.h:193
int max_capacity
Definition: Vector.h:334
int len
Definition: Vector.h:335
void shrink_to_fit()
Definition: Vector.h:261
T * p_data
Definition: Vector.h:336
Iterator begin()
Definition: Vector.h:272
T * data()
Definition: Vector.h:298
void deleteArray(T *oldData, int oldBufferLen)
Definition: Vector.h:372
void push_back(T &value)
Definition: Vector.h:177
Vector(int size, T value, Allocator &allocator=DefaultAllocator)
Allocate size and initialize array.
Definition: Vector.h:109
void pop_back()
Definition: Vector.h:203
Vector(Vector< T > ©From)
copy constructor
Definition: Vector.h:131
int capacity()
Definition: Vector.h:263
Vector(size_t len=0, Allocator &allocator=DefaultAllocator)
Default constructor: size 0 with DefaultAllocator.
Definition: Vector.h:100
void setAllocator(Allocator &allocator)
Definition: Vector.h:163
Definition: Allocator.h:6