#include "vector.h" #include #include static bool vector_grow(struct vector *vec) { vec->cap *= VECTOR_GROW_RATE; vec->values = realloc(vec->values, sizeof(*vec->values) * vec->cap); if (vec->values == NULL) { return false; } return true; } /* create a new vector of the given capacity */ struct vector * vector_new(size_t cap) { struct vector *vec = malloc(sizeof *vec); vec->size = 0; vec->cap = cap; vec->values = malloc(vec->cap * sizeof *vec->values); return vec; } /* push a new value to the end of the vector's memory */ size_t vector_push(struct vector *vec, void *value) { if (vec->size == vec->cap) vector_grow(vec); vec->values[vec->size++] = value; return vec->size - 1; } /* free vector related memory */ void vector_free(struct vector *vec) { free(vec->values); free(vec); }