]> begriffs open source - libderp/blob - include/vector.h
Beginning with vector
[libderp] / include / vector.h
1 #ifndef LIBGRIFFS_VECTOR_H
2 #define LIBGRIFFS_VECTOR_H
3
4 #include <stdbool.h>
5 #include <stddef.h>
6
7 typedef struct vector
8 {
9         size_t length;
10         size_t capacity;
11         void **elts;
12         void (*elt_dtor)(void *);
13 } vector;
14
15 vector * v_new(void (*elt_dtor)(void *));
16 void     v_free(vector *);
17 size_t   v_length(vector *);
18 bool     v_set_length(vector *, size_t);
19 size_t   v_capacity(vector *);
20 size_t   v_reserve_capacity(vector *, size_t);
21 bool     v_is_empty(vector *);
22 void *   v_at(vector *, size_t);
23 void *   v_first(vector *);
24 void *   v_last(vector *);
25 bool     v_append(vector *, void *);
26 bool     v_prepend(vector *, void *);
27 void *   v_remove_first(vector *);
28 void *   v_remove_last(vector *);
29 bool     v_insert(vector *, size_t, void *);
30 bool     v_remove(vector *, size_t i, size_t len);
31 bool     v_swap(vector *, size_t, size_t);
32 bool     v_clear(vector *);
33 size_t   v_find_index(vector *, void *, int (*)(const void *, const void *));
34 size_t   v_find_last_index(vector *, void *, int (*)(const void *, const void *));
35 bool     v_sort(vector *, int (*)(const void *, const void *));
36
37 #endif