#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include "vector.h"
struct Vector
VectorConstruct(size_t dim)
{
struct Vector vec = {
malloc(dim * sizeof(vec.data)),
dim,
};
if (!vec.data) {
fprintf(stderr, "VectorConstruct(%zu): out of memory\n", dim);
exit(1);
}
return vec;
}
void
VectorDestruct(struct Vector *vec)
{
free(vec->data);
# ifndef NDEBUG
*(double *) &vec->data = 0;
# endif
}
double *
VectorElementPtr(struct Vector *vec, size_t index)
{
assert(index < vec->dim);
return &vec->data[index];
}
double
VectorElement(const struct Vector *vec, size_t index)
{
assert(index < vec->dim);
return vec->data[index];
}