TeX/src/vector.c

35 lines
685 B
C

#include <TeX/vector.h>
#include <stdlib.h>
#include <string.h>
#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);
}