blob: 203057e13e508adaaef1394da9fb086284c79733 [file] [log] [blame]
Jeff Kingbe58e702008-10-05 17:43:21 -04001#ifndef USERDIFF_H
2#define USERDIFF_H
3
Jeff Kingd9bae1a2010-04-01 20:12:15 -04004#include "notes-cache.h"
5
Nguyễn Thái Ngọc Duyacd00ea2018-09-21 17:57:33 +02006struct index_state;
Nguyễn Thái Ngọc Duybd7ad452018-11-10 06:49:06 +01007struct repository;
Nguyễn Thái Ngọc Duyacd00ea2018-09-21 17:57:33 +02008
Jeff Kingbe58e702008-10-05 17:43:21 -04009struct userdiff_funcname {
10 const char *pattern;
11 int cflags;
12};
13
14struct userdiff_driver {
15 const char *name;
16 const char *external;
Jeff King122aa6f2008-10-05 17:43:36 -040017 int binary;
Jeff Kingbe58e702008-10-05 17:43:21 -040018 struct userdiff_funcname funcname;
Thomas Rast80c49c32009-01-17 17:29:48 +010019 const char *word_regex;
Jeff King9cb92c32008-10-05 17:43:45 -040020 const char *textconv;
Jeff Kingd9bae1a2010-04-01 20:12:15 -040021 struct notes_cache *textconv_cache;
22 int textconv_want_cache;
Jeff Kingbe58e702008-10-05 17:43:21 -040023};
24
Jeff Kingc7534ef2008-10-26 00:45:55 -040025int userdiff_config(const char *k, const char *v);
Jeff Kingbe58e702008-10-05 17:43:21 -040026struct userdiff_driver *userdiff_find_by_name(const char *name);
Nguyễn Thái Ngọc Duyacd00ea2018-09-21 17:57:33 +020027struct userdiff_driver *userdiff_find_by_path(struct index_state *istate,
28 const char *path);
Jeff Kingbe58e702008-10-05 17:43:21 -040029
Jeff Kinga64e6a42016-02-22 13:28:54 -050030/*
31 * Initialize any textconv-related fields in the driver and return it, or NULL
32 * if it does not have textconv enabled at all.
33 */
Nguyễn Thái Ngọc Duybd7ad452018-11-10 06:49:06 +010034struct userdiff_driver *userdiff_get_textconv(struct repository *r,
35 struct userdiff_driver *driver);
Jeff King3813e692011-05-23 16:30:14 -040036
Jeff Kingbe58e702008-10-05 17:43:21 -040037#endif /* USERDIFF */