]>
Commit | Line | Data |
---|---|---|
4ff192d3 | 1 | /* |
359fc2d2 | 2 | * Copyright (C) the libgit2 contributors. All rights reserved. |
4ff192d3 BS |
3 | * |
4 | * This file is part of libgit2, distributed under the GNU GPL v2 with | |
5 | * a Linking Exception. For full terms see the included COPYING file. | |
6 | */ | |
7 | #ifndef INCLUDE_commit_list_h__ | |
8 | #define INCLUDE_commit_list_h__ | |
9 | ||
eae0bfdc PP |
10 | #include "common.h" |
11 | ||
4ff192d3 BS |
12 | #include "git2/oid.h" |
13 | ||
14 | #define PARENT1 (1 << 0) | |
15 | #define PARENT2 (1 << 1) | |
16 | #define RESULT (1 << 2) | |
17 | #define STALE (1 << 3) | |
136a71f4 | 18 | #define ALL_FLAGS (PARENT1 | PARENT2 | STALE | RESULT) |
4ff192d3 BS |
19 | |
20 | #define PARENTS_PER_COMMIT 2 | |
21 | #define COMMIT_ALLOC \ | |
22 | (sizeof(git_commit_list_node) + PARENTS_PER_COMMIT * sizeof(git_commit_list_node *)) | |
23 | ||
babbff34 RB |
24 | #define FLAG_BITS 4 |
25 | ||
4ff192d3 BS |
26 | typedef struct git_commit_list_node { |
27 | git_oid oid; | |
5ffdea6f | 28 | int64_t time; |
c25aa7cd | 29 | uint32_t generation; |
4ff192d3 BS |
30 | unsigned int seen:1, |
31 | uninteresting:1, | |
32 | topo_delay:1, | |
33 | parsed:1, | |
6708618c | 34 | added:1, |
3a728fb5 | 35 | flags : FLAG_BITS; |
4ff192d3 | 36 | |
22a2d3d5 UG |
37 | uint16_t in_degree; |
38 | uint16_t out_degree; | |
4ff192d3 BS |
39 | |
40 | struct git_commit_list_node **parents; | |
41 | } git_commit_list_node; | |
42 | ||
43 | typedef struct git_commit_list { | |
44 | git_commit_list_node *item; | |
45 | struct git_commit_list *next; | |
46 | } git_commit_list; | |
47 | ||
48 | git_commit_list_node *git_commit_list_alloc_node(git_revwalk *walk); | |
c25aa7cd | 49 | int git_commit_list_generation_cmp(const void *a, const void *b); |
4075e060 | 50 | int git_commit_list_time_cmp(const void *a, const void *b); |
4ff192d3 BS |
51 | void git_commit_list_free(git_commit_list **list_p); |
52 | git_commit_list *git_commit_list_insert(git_commit_list_node *item, git_commit_list **list_p); | |
53 | git_commit_list *git_commit_list_insert_by_date(git_commit_list_node *item, git_commit_list **list_p); | |
54 | int git_commit_list_parse(git_revwalk *walk, git_commit_list_node *commit); | |
55 | git_commit_list_node *git_commit_list_pop(git_commit_list **stack); | |
56 | ||
57 | #endif |