]> git.proxmox.com Git - libgit2.git/blob - src/revobject.h
Add loading and parsing of tag objects
[libgit2.git] / src / revobject.h
1 #ifndef INCLUDE_objecttable_h__
2 #define INCLUDE_objecttable_h__
3
4 #include "git/common.h"
5 #include "git/oid.h"
6 #include "git/odb.h"
7
8 struct git_revpool_object {
9 git_oid id;
10 git_revpool *pool;
11 git_otype type;
12 };
13
14 struct git_revpool_node {
15 struct git_revpool_object *object;
16 unsigned int hash;
17 struct git_revpool_node *next;
18 };
19
20 struct git_revpool_table {
21 struct git_revpool_node **nodes;
22
23 unsigned int size_mask;
24 unsigned int count;
25 unsigned int max_count;
26 };
27
28 struct git_revpool_tableit {
29 struct git_revpool_node **nodes;
30 struct git_revpool_node *current_node;
31 unsigned int current_pos;
32 unsigned int size;
33 };
34
35
36 typedef struct git_revpool_node git_revpool_node;
37 typedef struct git_revpool_object git_revpool_object;
38 typedef struct git_revpool_table git_revpool_table;
39 typedef struct git_revpool_tableit git_revpool_tableit;
40
41 git_revpool_table *git_revpool_table_create(unsigned int min_size);
42 int git_revpool_table_insert(git_revpool_table *table, git_revpool_object *object);
43 git_revpool_object *git_revpool_table_lookup(git_revpool_table *table, const git_oid *id);
44 void git_revpool_table_resize(git_revpool_table *table);
45 void git_revpool_table_free(git_revpool_table *table);
46
47
48 git_revpool_object *git_revpool_tableit_next(git_revpool_tableit *it);
49 git_revpool_object *git_revpool_tableit_nextfilter(git_revpool_tableit *it, git_otype type);
50 void git_revpool_tableit_init(git_revpool_table *table, git_revpool_tableit *it);
51
52 #endif