summaryrefslogtreecommitdiff
path: root/src/patch_generate.h
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@microsoft.com>2015-11-24 15:19:59 -0500
committerEdward Thomson <ethomson@github.com>2016-05-26 13:01:08 -0500
commit8d44f8b78f7929c86b9e37acfe40fe707815bca6 (patch)
tree3cc10ccde05acd66e67a9d196bcc105e1190cdfe /src/patch_generate.h
parent53571f2f0c5cbb30e86aa0b8095f51c09c85761e (diff)
downloadlibgit2-8d44f8b78f7929c86b9e37acfe40fe707815bca6.tar.gz
patch: `patch_diff` -> `patch_generated`
Diffstat (limited to 'src/patch_generate.h')
-rw-r--r--src/patch_generate.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/patch_generate.h b/src/patch_generate.h
new file mode 100644
index 000000000..bb26a76e5
--- /dev/null
+++ b/src/patch_generate.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+#ifndef INCLUDE_patch_generate_h__
+#define INCLUDE_patch_generate_h__
+
+#include "common.h"
+#include "diff.h"
+#include "diff_file.h"
+#include "patch.h"
+
+enum {
+ GIT_PATCH_GENERATED_ALLOCATED = (1 << 0),
+ GIT_PATCH_GENERATED_INITIALIZED = (1 << 1),
+ GIT_PATCH_GENERATED_LOADED = (1 << 2),
+ /* the two sides are different */
+ GIT_PATCH_GENERATED_DIFFABLE = (1 << 3),
+ /* the difference between the two sides has been computed */
+ GIT_PATCH_GENERATED_DIFFED = (1 << 4),
+ GIT_PATCH_GENERATED_FLATTENED = (1 << 5),
+};
+
+struct git_patch_generated {
+ struct git_patch base;
+
+ git_diff *diff; /* for refcount purposes, maybe NULL for blob diffs */
+ size_t delta_index;
+ git_diff_file_content ofile;
+ git_diff_file_content nfile;
+ uint32_t flags;
+ git_pool flattened;
+};
+
+typedef struct git_patch_generated git_patch_generated;
+
+extern git_diff_driver *git_patch_generated_driver(git_patch_generated *);
+
+extern void git_patch_generated_old_data(
+ char **, size_t *, git_patch_generated *);
+extern void git_patch_generated_new_data(
+ char **, size_t *, git_patch_generated *);
+
+typedef struct git_patch_generated_output git_patch_generated_output;
+
+struct git_patch_generated_output {
+ /* these callbacks are issued with the diff data */
+ git_diff_file_cb file_cb;
+ git_diff_binary_cb binary_cb;
+ git_diff_hunk_cb hunk_cb;
+ git_diff_line_cb data_cb;
+ void *payload;
+
+ /* this records the actual error in cases where it may be obscured */
+ int error;
+
+ /* this callback is used to do the diff and drive the other callbacks.
+ * see diff_xdiff.h for how to use this in practice for now.
+ */
+ int (*diff_cb)(git_patch_generated_output *output,
+ git_patch_generated *patch);
+};
+
+#endif