]> begriffs open source - libderp/blob - include/vector.h
Hashmap iterator
[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);
12 void     v_free(vector *);
13 void     v_dtor(vector *, dtor *, void *);
14 size_t   v_length(const vector *);
15 bool     v_set_length(vector *, size_t);
16 size_t   v_capacity(const vector *);
17 size_t   v_reserve_capacity(vector *, size_t);
18 bool     v_is_empty(const vector *);
19 void *   v_at(const vector *, size_t);
20 void *   v_first(const vector *);
21 void *   v_last(const vector *);
22 bool     v_append(vector *, void *);
23 bool     v_prepend(vector *, void *);
24 void *   v_remove_first(vector *);
25 void *   v_remove_last(vector *);
26 bool     v_insert(vector *, size_t, void *);
27 void *   v_remove(vector *, size_t);
28 bool     v_swap(vector *, size_t, size_t);
29 void     v_clear(vector *);
30 size_t   v_find_index(const vector *, const void *,
31                       comparator *, void *aux);
32 size_t   v_find_last_index(const vector *, const void *,
33                            comparator *, void *aux);
34 bool     v_sort(vector *, comparator *, void *aux);
35 bool     v_reverse(vector *);
36
37 #endif