vector.h
Raw
1#ifndef VECTOR_H
2#define VECTOR_H
3#define VECTOR_DEFAULT_SIZE 4
4#include <stdint.h>
5#include <stdlib.h>
6#include <string.h>
7#include <assert.h>
8#include <stdbool.h>
9
10typedef struct Vector
11{
12 void** items;
13 size_t capacity;
14 size_t length;
15} Vector;
16
17typedef struct FindReturn
18{
19 bool found;
20 size_t index; //if found is false, this contains rubbish
21} FindReturn;
22
23Vector* new_vector(void);
24void* vector_at(const Vector* vector, size_t index);
25void* vector_pop(Vector* vector, size_t index);
26bool vector_push(Vector* vector, void* item);
27void vector_remove(Vector* vector, size_t index);
28bool vector_adjust_size(Vector* vector, size_t size);
29FindReturn vector_find(const Vector* haystack, const void* needle, bool (*cmp)(const void*, const void*));
30bool vector_insert(Vector* vector, size_t index, void* item);
31
32
33#endif //VECTOR_H
34