#include #include #include #undef vector_make /* vector_make(): Make a new vector of a given type */ void vector_make(vector_t *v, size_t elsize) { v->len = 0; v->size = 0; v->elsize = elsize; v->data = NULL; } /* vector_append(): Append a new element to a vector */ void vector_append(vector_t *v, void *element) { /* Realloc whenever the vector runs out of space */ if(v->len >= v->size) { v->data = realloc(v->data, (v->size + 8) * v->elsize); v->size += 8; } memcpy(v->data + v->len * v->elsize, element, v->elsize); v->len++; } /* vector_free(): Free a vector's contents */ void vector_free(vector_t *v) { free(v->data); }