Fumofumotris/source/fumoengine/include/vector.c
Julia 62b37ed348 hj
kj
2024-05-07 17:10:15 -05:00

47 lines
892 B
C

#include "vector.h"
#include <stdlib.h>
#include <string.h>
bool CreateVector(VectorT T, struct Vector *vec)
{
void *array = malloc(16 * T->SIZE);
if (array == nullptr)
return false;
*vec = (struct Vector) {
.len = 0,
.capacity = 16,
.array = array
};
return true;
}
void FreeVector(struct Vector *vec)
{
free(vec->array);
}
void *VectorGet(VectorT T, struct Vector *vec, usize i)
{
return (u8 *)vec->array + i * T->SIZE;
}
bool VectorAdd(VectorT T, struct Vector *vec, void *item)
{
if (vec->len == vec->capacity) {
usize new_capacity = vec->capacity * 2;
void *new_array = realloc(vec->array, new_capacity * T->SIZE);
if (new_array == nullptr)
return false;
vec->capacity = new_capacity;
}
memcpy(VectorGet(T, vec, vec->len++), item, T->SIZE);
return true;
}