import mem; import util; typedef template vector { T *data; int size; int available; bool destroyItems; vector *construct(bool destroyItemsIn) { destroyItems = destroyItemsIn; return construct(); size = 0; available = 8; data = new(8); return this; } void destruct() { if (destroyItems) delete(data, size); else delete(data); } bool resize(int newSize) { T* newData = new(newSize); if (!newData) return false; for (int i = 0; i < lesser(size, newSize); i++;) newData[i] = data[i]; delete(data, 0); return true; } T at(int index) { return get(index); } T get(int index) { if (index < 0 || index >= size) return null; return data[index]; } void set(int index, T dataIn) { if (index < 0 || index >= size) return; data[index] = dataIn; } void addEnd(T dataIn) { if (size < available) size++; else resize(size*2); data[size-1]; } };