]>
Commit | Line | Data |
---|---|---|
c5696427 VM |
1 | #ifndef INCLUDE_objecttable_h__ |
2 | #define INCLUDE_objecttable_h__ | |
3 | ||
4 | #include "git/common.h" | |
5 | #include "git/oid.h" | |
6 | ||
7 | struct git_revpool_object | |
8 | { | |
9 | git_oid id; | |
10 | git_revpool *pool; | |
11 | }; | |
12 | ||
13 | struct git_revpool_node | |
14 | { | |
15 | struct git_revpool_object *object; | |
16 | unsigned int hash; | |
17 | struct git_revpool_node *next; | |
18 | }; | |
19 | ||
20 | struct git_revpool_table | |
21 | { | |
a7c182c5 VM |
22 | struct git_revpool_node **nodes; |
23 | ||
c5696427 VM |
24 | unsigned int size_mask; |
25 | unsigned int count; | |
26 | unsigned int max_count; | |
c5696427 VM |
27 | }; |
28 | ||
655d381a VM |
29 | struct git_revpool_tableit |
30 | { | |
31 | struct git_revpool_node **nodes; | |
32 | struct git_revpool_node *current_node; | |
33 | unsigned int current_pos; | |
34 | unsigned int size; | |
35 | }; | |
36 | ||
c5696427 VM |
37 | |
38 | typedef struct git_revpool_node git_revpool_node; | |
39 | typedef struct git_revpool_object git_revpool_object; | |
40 | typedef struct git_revpool_table git_revpool_table; | |
655d381a | 41 | typedef struct git_revpool_tableit git_revpool_tableit; |
c5696427 VM |
42 | |
43 | git_revpool_table *git_revpool_table_create(unsigned int min_size); | |
44 | int git_revpool_table_insert(git_revpool_table *table, git_revpool_object *object); | |
45 | git_revpool_object *git_revpool_table_lookup(git_revpool_table *table, const git_oid *id); | |
46 | void git_revpool_table_resize(git_revpool_table *table); | |
5e15176d | 47 | void git_revpool_table_free(git_revpool_table *table); |
c5696427 VM |
48 | |
49 | ||
50 | #endif |