aboutsummaryrefslogtreecommitdiffstats
path: root/userdiff.h
diff options
context:
space:
mode:
Diffstat (limited to 'userdiff.h')
-rw-r--r--userdiff.h23
1 files changed, 21 insertions, 2 deletions
diff --git a/userdiff.h b/userdiff.h
index 2ef0ce5452..24419db697 100644
--- a/userdiff.h
+++ b/userdiff.h
@@ -3,6 +3,9 @@
#include "notes-cache.h"
+struct index_state;
+struct repository;
+
struct userdiff_funcname {
const char *pattern;
int cflags;
@@ -11,6 +14,7 @@ struct userdiff_funcname {
struct userdiff_driver {
const char *name;
const char *external;
+ const char *algorithm;
int binary;
struct userdiff_funcname funcname;
const char *word_regex;
@@ -18,15 +22,30 @@ struct userdiff_driver {
struct notes_cache *textconv_cache;
int textconv_want_cache;
};
+enum userdiff_driver_type {
+ USERDIFF_DRIVER_TYPE_BUILTIN = 1<<0,
+ USERDIFF_DRIVER_TYPE_CUSTOM = 1<<1,
+};
+typedef int (*each_userdiff_driver_fn)(struct userdiff_driver *,
+ enum userdiff_driver_type, void *);
int userdiff_config(const char *k, const char *v);
struct userdiff_driver *userdiff_find_by_name(const char *name);
-struct userdiff_driver *userdiff_find_by_path(const char *path);
+struct userdiff_driver *userdiff_find_by_path(struct index_state *istate,
+ const char *path);
/*
* Initialize any textconv-related fields in the driver and return it, or NULL
* if it does not have textconv enabled at all.
*/
-struct userdiff_driver *userdiff_get_textconv(struct userdiff_driver *driver);
+struct userdiff_driver *userdiff_get_textconv(struct repository *r,
+ struct userdiff_driver *driver);
+
+/*
+ * Iterate over all userdiff drivers. The userdiff_driver_type
+ * argument to each_userdiff_driver_fn indicates their type. Return
+ * non-zero to exit early from the loop.
+ */
+int for_each_userdiff_driver(each_userdiff_driver_fn, void *);
#endif /* USERDIFF */