2 * Copyright (C) the libgit2 contributors. All rights reserved.
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.
7 #ifndef INCLUDE_patch_generate_h__
8 #define INCLUDE_patch_generate_h__
13 #include "diff_file.h"
17 GIT_PATCH_GENERATED_ALLOCATED
= (1 << 0),
18 GIT_PATCH_GENERATED_INITIALIZED
= (1 << 1),
19 GIT_PATCH_GENERATED_LOADED
= (1 << 2),
20 /* the two sides are different */
21 GIT_PATCH_GENERATED_DIFFABLE
= (1 << 3),
22 /* the difference between the two sides has been computed */
23 GIT_PATCH_GENERATED_DIFFED
= (1 << 4),
24 GIT_PATCH_GENERATED_FLATTENED
= (1 << 5),
27 struct git_patch_generated
{
28 struct git_patch base
;
30 git_diff
*diff
; /* for refcount purposes, maybe NULL for blob diffs */
32 git_diff_file_content ofile
;
33 git_diff_file_content nfile
;
38 typedef struct git_patch_generated git_patch_generated
;
40 extern git_diff_driver
*git_patch_generated_driver(git_patch_generated
*);
42 extern void git_patch_generated_old_data(
43 char **, size_t *, git_patch_generated
*);
44 extern void git_patch_generated_new_data(
45 char **, size_t *, git_patch_generated
*);
46 extern int git_patch_generated_from_diff(
47 git_patch
**, git_diff
*, size_t);
49 typedef struct git_patch_generated_output git_patch_generated_output
;
51 struct git_patch_generated_output
{
52 /* these callbacks are issued with the diff data */
53 git_diff_file_cb file_cb
;
54 git_diff_binary_cb binary_cb
;
55 git_diff_hunk_cb hunk_cb
;
56 git_diff_line_cb data_cb
;
59 /* this records the actual error in cases where it may be obscured */
62 /* this callback is used to do the diff and drive the other callbacks.
63 * see diff_xdiff.h for how to use this in practice for now.
65 int (*diff_cb
)(git_patch_generated_output
*output
,
66 git_patch_generated
*patch
);