--- /dev/null
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+// TODO: Handle error warnings?
+// TODO: Implement more useful functions?
+
+typedef struct {
+ char * data;
+ size_t element_size;
+ size_t element_count;
+} vector_t;
+
+extern void vector_init(vector_t * vector,
+ size_t element_size,
+ size_t element_count);
+
+extern void vector_push(vector_t * vector,
+ void * data);
+
+extern void vector_pop(vector_t * vector);
+
+extern void * vector_get(vector_t * vector,
+ size_t element);
+
+extern void vector_set(vector_t * vector,
+ void * data,
+ size_t element);
+
+extern void vector_free(vector_t * vector);
+
+extern void example_print(example_t * example);
+
+void vector_init(vector_t * vector,
+ size_t element_size,
+ size_t element_count) {
+ vector->data = NULL;
+ vector->element_size = element_size;
+ vector->element_count = element_count;
+
+ vector->data = malloc(vector->element_size * vector->element_count);
+
+ if ((! vector->data) && (vector->element_count)) {
+ puts("vector_init");
+ exit(EXIT_FAILURE);
+ }
+
+ memset(vector->data,
+ 0,
+ vector->element_size * vector->element_count);
+}
+
+void vector_push(vector_t * vector,
+ void * data) {
+ ++vector->element_count;
+
+ vector->data = realloc(vector->data,
+ vector->element_size * vector->element_count);
+
+ if (! vector->data) {
+ puts("vector_push");
+ exit(EXIT_FAILURE);
+ }
+
+ memcpy(&vector->data[(vector->element_count - 1) * vector->element_size],
+ data,
+ vector->element_size);
+}
+
+void vector_pop(vector_t * vector) {
+ (void) vector;
+}
+
+void * vector_get(vector_t * vector,
+ size_t element) {
+ if (element >= vector->element_count) {
+ puts("vector_get");
+ exit(EXIT_FAILURE);
+ }
+
+ return &vector->data[vector->element_size * element];
+}
+
+void vector_set(vector_t * vector,
+ void * data,
+ size_t element) {
+ if (element >= vector->element_count) {
+ puts("vector_set");
+ exit(EXIT_FAILURE);
+ }
+
+ memcpy(&vector->data[vector->element_size * element],
+ data,
+ vector->element_size);
+}
+
+void vector_free(vector_t * vector) {
+ free(vector->data);
+}