]> git.proxmox.com Git - libgit2.git/blob - src/diff.h
New upstream version 1.4.3+dfsg.1
[libgit2.git] / src / diff.h
1 /*
2 * Copyright (C) the libgit2 contributors. All rights reserved.
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_diff_h__
8 #define INCLUDE_diff_h__
9
10 #include "common.h"
11
12 #include "git2/diff.h"
13 #include "git2/patch.h"
14 #include "git2/sys/diff.h"
15 #include "git2/oid.h"
16
17 #include "vector.h"
18 #include "iterator.h"
19 #include "repository.h"
20 #include "pool.h"
21 #include "odb.h"
22
23 #define DIFF_OLD_PREFIX_DEFAULT "a/"
24 #define DIFF_NEW_PREFIX_DEFAULT "b/"
25
26 typedef enum {
27 GIT_DIFF_TYPE_UNKNOWN = 0,
28 GIT_DIFF_TYPE_GENERATED = 1,
29 GIT_DIFF_TYPE_PARSED = 2
30 } git_diff_origin_t;
31
32 struct git_diff {
33 git_refcount rc;
34 git_repository *repo;
35 git_attr_session attrsession;
36 git_diff_origin_t type;
37 git_diff_options opts;
38 git_vector deltas; /* vector of git_diff_delta */
39 git_pool pool;
40 git_iterator_t old_src;
41 git_iterator_t new_src;
42 git_diff_perfdata perf;
43
44 int (*strcomp)(const char *, const char *);
45 int (*strncomp)(const char *, const char *, size_t);
46 int (*pfxcomp)(const char *str, const char *pfx);
47 int (*entrycomp)(const void *a, const void *b);
48
49 int (*patch_fn)(git_patch **out, git_diff *diff, size_t idx);
50 void (*free_fn)(git_diff *diff);
51 };
52
53 extern int git_diff_delta__format_file_header(
54 git_str *out,
55 const git_diff_delta *delta,
56 const char *oldpfx,
57 const char *newpfx,
58 int oid_strlen,
59 bool print_index);
60
61 extern int git_diff_delta__cmp(const void *a, const void *b);
62 extern int git_diff_delta__casecmp(const void *a, const void *b);
63
64 extern int git_diff__entry_cmp(const void *a, const void *b);
65 extern int git_diff__entry_icmp(const void *a, const void *b);
66
67 #endif