#ifndef _VECTOR
#define _VECTOR

#include "Types.h"
#include "MemoryManager.h"

typedef void* Vector;

/* Create */

Vector V_new(MemoryManager *mm, usize element_size, usize length);

/* Free */

Result V_free(Vector *arr);

/* Modify */

Result V_push(Vector *arr, void *pointer_to_value);
Result V_pushp(Vector* *arr, void *value);
Result V_pop(Vector *arr);

/* Get */

usize V_length(Vector arr);
usize V_count(Vector arr);
void* V_top(Vector arr);

#endif /* _VECTOR */
