1 #ifndef LIBDERP_VECTOR_H
2 #define LIBDERP_VECTOR_H
9 typedef struct vector vector;
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 *);