]> git.proxmox.com Git - libgit2.git/blob - src/vector.h
Refactor all 'vector' functions into common code
[libgit2.git] / src / vector.h
1 #ifndef INCLUDE_vector_h__
2 #define INCLUDE_vector_h__
3
4 #include "git/common.h"
5
6
7 typedef int (*git_vector_cmp)(const void *, const void *);
8 typedef int (*git_vector_srch)(const void *, const void *);
9
10 typedef struct git_vector {
11 unsigned int _alloc_size;
12 git_vector_cmp _cmp;
13 git_vector_srch _srch;
14
15 void **contents;
16 unsigned int length;
17 } git_vector;
18
19
20 int git_vector_init(git_vector *v, unsigned int initial_size, git_vector_cmp cmp, git_vector_srch srch);
21 void git_vector_free(git_vector *v);
22 void git_vector_clear(git_vector *v);
23
24 int git_vector_search(git_vector *v, const void *key);
25 void git_vector_sort(git_vector *v);
26
27 void *git_vector_get(git_vector *v, unsigned int position);
28
29 int git_vector_insert(git_vector *v, void *element);
30 int git_vector_remove(git_vector *v, unsigned int idx);
31
32 #endif