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