summaryrefslogtreecommitdiff
path: root/src/libgit2/diff_driver.h
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2021-11-14 08:47:40 -0500
committerEdward Thomson <ethomson@edwardthomson.com>2022-02-22 22:07:44 -0500
commitef4ab2988320005cbcb3db920e6b41f10b3c60cf (patch)
tree6609f213ad9d607e8df1f543919d3154c056c3ef /src/libgit2/diff_driver.h
parent49e180c862dc7c6d1f62a53bf8756e25b3417968 (diff)
downloadlibgit2-ef4ab2988320005cbcb3db920e6b41f10b3c60cf.tar.gz
refactor: `src` is now `src/libgit2`
Diffstat (limited to 'src/libgit2/diff_driver.h')
-rw-r--r--src/libgit2/diff_driver.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/libgit2/diff_driver.h b/src/libgit2/diff_driver.h
new file mode 100644
index 000000000..03711e89e
--- /dev/null
+++ b/src/libgit2/diff_driver.h
@@ -0,0 +1,52 @@
+/*
+ * 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_diff_driver_h__
+#define INCLUDE_diff_driver_h__
+
+#include "common.h"
+
+#include "attr_file.h"
+#include "str.h"
+
+typedef struct git_diff_driver_registry git_diff_driver_registry;
+
+git_diff_driver_registry *git_diff_driver_registry_new(void);
+void git_diff_driver_registry_free(git_diff_driver_registry *);
+
+typedef struct git_diff_driver git_diff_driver;
+
+int git_diff_driver_lookup(git_diff_driver **, git_repository *,
+ git_attr_session *attrsession, const char *);
+void git_diff_driver_free(git_diff_driver *);
+
+/* diff option flags to force off and on for this driver */
+void git_diff_driver_update_options(uint32_t *option_flags, git_diff_driver *);
+
+/* returns -1 meaning "unknown", 0 meaning not binary, 1 meaning binary */
+int git_diff_driver_content_is_binary(
+ git_diff_driver *, const char *content, size_t content_len);
+
+typedef long (*git_diff_find_context_fn)(
+ const char *, long, char *, long, void *);
+
+typedef int (*git_diff_find_context_line)(
+ git_diff_driver *, git_str *);
+
+typedef struct {
+ git_diff_driver *driver;
+ git_diff_find_context_line match_line;
+ git_str line;
+} git_diff_find_context_payload;
+
+void git_diff_find_context_init(
+ git_diff_find_context_fn *findfn_out,
+ git_diff_find_context_payload *payload_out,
+ git_diff_driver *driver);
+
+void git_diff_find_context_clear(git_diff_find_context_payload *);
+
+#endif