]> git.proxmox.com Git - libgit2.git/blame - src/commit_list.h
Refresh patches
[libgit2.git] / src / commit_list.h
CommitLineData
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
26typedef 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
43typedef struct git_commit_list {
44 git_commit_list_node *item;
45 struct git_commit_list *next;
46} git_commit_list;
47
48git_commit_list_node *git_commit_list_alloc_node(git_revwalk *walk);
c25aa7cd 49int git_commit_list_generation_cmp(const void *a, const void *b);
4075e060 50int git_commit_list_time_cmp(const void *a, const void *b);
4ff192d3
BS
51void git_commit_list_free(git_commit_list **list_p);
52git_commit_list *git_commit_list_insert(git_commit_list_node *item, git_commit_list **list_p);
53git_commit_list *git_commit_list_insert_by_date(git_commit_list_node *item, git_commit_list **list_p);
54int git_commit_list_parse(git_revwalk *walk, git_commit_list_node *commit);
55git_commit_list_node *git_commit_list_pop(git_commit_list **stack);
56
57#endif