summaryrefslogtreecommitdiff
path: root/src/diff_driver.h
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2013-06-11 11:22:22 -0700
committerRussell Belfer <rb@github.com>2013-06-11 11:22:22 -0700
commit5dc98298a14a9adae3cf8b21fb01f682791c29c7 (patch)
treeed0e5ab97a3e7d6d03b9959265693665f950cef6 /src/diff_driver.h
parent3eadfecd325d355d3f8a9631d9c89b7e8eede98b (diff)
downloadlibgit2-5dc98298a14a9adae3cf8b21fb01f682791c29c7.tar.gz
Implement regex pattern diff driver
This implements the loading of regular expression pattern lists for diff drivers that search for function context in that way. This also changes the way that diff drivers update options and interface with xdiff APIs to make them a little more flexible.
Diffstat (limited to 'src/diff_driver.h')
-rw-r--r--src/diff_driver.h21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/diff_driver.h b/src/diff_driver.h
index af9fa073e..3db7df000 100644
--- a/src/diff_driver.h
+++ b/src/diff_driver.h
@@ -8,6 +8,7 @@
#define INCLUDE_diff_driver_h__
#include "common.h"
+#include "buffer.h"
typedef struct git_diff_driver_registry git_diff_driver_registry;
@@ -19,8 +20,8 @@ typedef struct git_diff_driver git_diff_driver;
int git_diff_driver_lookup(git_diff_driver **, git_repository *, const char *);
void git_diff_driver_free(git_diff_driver *);
-/* returns -1 meaning "unknown", 0 meaning not binary, 1 meaning binary */
-int git_diff_driver_is_binary(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(
@@ -29,6 +30,20 @@ int git_diff_driver_content_is_binary(
typedef long (*git_diff_find_context_fn)(
const char *, long, char *, long, void *);
-git_diff_find_context_fn git_diff_driver_find_content_fn(git_diff_driver *);
+typedef int (*git_diff_find_context_line)(
+ git_diff_driver *, const char *, long);
+
+typedef struct {
+ git_diff_driver *driver;
+ git_diff_find_context_line match_line;
+ git_buf 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