#ifndef VECTOR_H #define VECTOR_H typedef long unsigned int size_t; typedef enum { INT = 0, FLOAT = 1, CHAR = 2, VECTOR = 3 // allows for multi-dimensional arrays } dataType_e; typedef struct { dataType_e type; size_t size; size_t capacity; size_t elementSize; void* data; } vector_t; vector_t* vectorInit(dataType_e dataType); // size gets determined by the dataType and the capacity starts at 1 and x1.5 every time the vector gets filled up void vectorReset(vector_t* v); // sets the vector to its original state void* vectorPop(vector_t* v); // remove one value from the end of the vector and return it void vectorPush(vector_t* v, void* element); // push one value at the end of the vector void vectorCleanup(vector_t* v); // freeing pointers void vectorPrint(vector_t* v); // shows the vector void vectorPrintAsString(vector_t* v); // show the vector as a string if the v->type is CHAR void vectorInsertAt(vector_t* v, int index, void* element); // inserts an element 'element' at index 'index' void vectorSetAt(vector_t* v, int index, void* element); // set an element's value at a given index char* vectorToString(vector_t* v); // convert the vector into a regular string void* vectorGetAt(vector_t* v, int index); // get an element at the given index void _printVectorRecursive(vector_t* v, int depth); #endif