import mem; import util; import io; typedef template vector (Destructable) { T *data; int size; int available; vector* construct() { size = 0; available = 8; data = new(8); return this; } void destruct() { 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) { println("Vector access out of bounds! Retuning 0th element as sanest option"); return data[0]; } 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] = dataIn; } };