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