]> git.proxmox.com Git - libgit2.git/blame - src/revobject.h
Add topological sorting and new insertion methods for commit lists.
[libgit2.git] / src / revobject.h
CommitLineData
c5696427
VM
1#ifndef INCLUDE_objecttable_h__
2#define INCLUDE_objecttable_h__
3
4#include "git/common.h"
5#include "git/oid.h"
6
7struct git_revpool_object
8{
9 git_oid id;
10 git_revpool *pool;
11};
12
13struct git_revpool_node
14{
15 struct git_revpool_object *object;
16 unsigned int hash;
17 struct git_revpool_node *next;
18};
19
20struct 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
29struct 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
38typedef struct git_revpool_node git_revpool_node;
39typedef struct git_revpool_object git_revpool_object;
40typedef struct git_revpool_table git_revpool_table;
655d381a 41typedef struct git_revpool_tableit git_revpool_tableit;
c5696427
VM
42
43git_revpool_table *git_revpool_table_create(unsigned int min_size);
44int git_revpool_table_insert(git_revpool_table *table, git_revpool_object *object);
45git_revpool_object *git_revpool_table_lookup(git_revpool_table *table, const git_oid *id);
46void git_revpool_table_resize(git_revpool_table *table);
5e15176d 47void git_revpool_table_free(git_revpool_table *table);
c5696427
VM
48
49
50#endif