]> begriffs open source - libderp/blob - include/vector.h
WIP: pass auxiliary arg to comparator
[libderp] / include / vector.h
1 #ifndef LIBDERP_VECTOR_H
2 #define LIBDERP_VECTOR_H
3
4 #include "common.h"
5
6 #include <stdbool.h>
7 #include <stddef.h>
8
9 typedef struct vector vector;
10
11 vector * v_new(void (*elt_dtor)(void *));
12 void     v_free(vector *);
13 size_t   v_length(const vector *);
14 bool     v_set_length(vector *, size_t);
15 size_t   v_capacity(const vector *);
16 size_t   v_reserve_capacity(vector *, size_t);
17 bool     v_is_empty(const vector *);
18 void *   v_at(const vector *, size_t);
19 void *   v_first(const vector *);
20 void *   v_last(const vector *);
21 bool     v_append(vector *, void *);
22 bool     v_prepend(vector *, void *);
23 void *   v_remove_first(vector *);
24 void *   v_remove_last(vector *);
25 bool     v_insert(vector *, size_t, void *);
26 void *   v_remove(vector *, size_t);
27 bool     v_swap(vector *, size_t, size_t);
28 void     v_clear(vector *);
29 size_t   v_find_index(const vector *, const void *,
30                       comparator *, void *aux);
31 size_t   v_find_last_index(const vector *, const void *,
32                            comparator *, void *aux);
33 bool     v_sort(vector *, comparator *, void *aux);
34 bool     v_reverse(vector *);
35
36 #endif