1 #ifndef LIBDERP_VECTOR_H
2 #define LIBDERP_VECTOR_H
7 typedef struct vector vector;
9 vector * v_new(void (*elt_dtor)(void *));
10 void v_free(vector *);
11 size_t v_length(const vector *);
12 bool v_set_length(vector *, size_t);
13 size_t v_capacity(const vector *);
14 size_t v_reserve_capacity(vector *, size_t);
15 bool v_is_empty(const vector *);
16 void * v_at(const vector *, size_t);
17 void * v_first(const vector *);
18 void * v_last(const vector *);
19 bool v_append(vector *, void *);
20 bool v_prepend(vector *, void *);
21 void * v_remove_first(vector *);
22 void * v_remove_last(vector *);
23 bool v_insert(vector *, size_t, void *);
24 void * v_remove(vector *, size_t);
25 bool v_swap(vector *, size_t, size_t);
26 void v_clear(vector *);
27 size_t v_find_index(const vector *, const void *,
28 int (*)(const void *, const void *));
29 size_t v_find_last_index(const vector *, const void *,
30 int (*)(const void *, const void *));
31 bool v_sort(vector *, int (*)(const void *, const void *));
32 bool v_reverse(vector *);