]> git.proxmox.com Git - libgit2.git/blob - src/diff_driver.h
03711e89e8bef125a0702f40516b6896d84a7b53
[libgit2.git] / src / diff_driver.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_driver_h__
8 #define INCLUDE_diff_driver_h__
9
10 #include "common.h"
11
12 #include "attr_file.h"
13 #include "str.h"
14
15 typedef struct git_diff_driver_registry git_diff_driver_registry;
16
17 git_diff_driver_registry *git_diff_driver_registry_new(void);
18 void git_diff_driver_registry_free(git_diff_driver_registry *);
19
20 typedef struct git_diff_driver git_diff_driver;
21
22 int git_diff_driver_lookup(git_diff_driver **, git_repository *,
23 git_attr_session *attrsession, const char *);
24 void git_diff_driver_free(git_diff_driver *);
25
26 /* diff option flags to force off and on for this driver */
27 void git_diff_driver_update_options(uint32_t *option_flags, git_diff_driver *);
28
29 /* returns -1 meaning "unknown", 0 meaning not binary, 1 meaning binary */
30 int git_diff_driver_content_is_binary(
31 git_diff_driver *, const char *content, size_t content_len);
32
33 typedef long (*git_diff_find_context_fn)(
34 const char *, long, char *, long, void *);
35
36 typedef int (*git_diff_find_context_line)(
37 git_diff_driver *, git_str *);
38
39 typedef struct {
40 git_diff_driver *driver;
41 git_diff_find_context_line match_line;
42 git_str line;
43 } git_diff_find_context_payload;
44
45 void git_diff_find_context_init(
46 git_diff_find_context_fn *findfn_out,
47 git_diff_find_context_payload *payload_out,
48 git_diff_driver *driver);
49
50 void git_diff_find_context_clear(git_diff_find_context_payload *);
51
52 #endif