1 module deimos.git2.sys.filter;
2 
3 import deimos.git2.filter;
4 import deimos.git2.buffer;
5 import deimos.git2.oid;
6 import deimos.git2.types;
7 
8 git_filter* git_filter_lookup(const(char)* name);
9 
10 enum GIT_FILTER_CRLF = "crlf";
11 enum GIT_FILTER_IDENT = "ident";
12 enum GIT_FILTER_CRLF_PRIORITY = 0;
13 enum GIT_FILTER_IDENT_PRIORITY = 100;
14 enum GIT_FILTER_DRIVER_PRIORITY = 200;
15 
16 int git_filter_list_new(
17 	git_filter_list **out_, git_repository *repo, git_filter_mode_t mode);
18 int git_filter_list_push(
19 	git_filter_list *fl, git_filter *filter, void *payload);
20 size_t git_filter_list_length(const(git_filter_list)* fl);
21 struct git_filter_source {
22 	@disable this();
23 	@disable this(this);
24 }
25 
26 git_repository* git_filter_source_repo(const(git_filter_source)* src);
27 const(char)* git_filter_source_path(const(git_filter_source)* src);
28 uint16_t git_filter_source_filemode(const(git_filter_source)* src);
29 const(git_oid)* git_filter_source_id(const(git_filter_source)* src);
30 git_filter_mode_t git_filter_source_mode(const(git_filter_source)* src);
31 
32 alias git_filter_init_fn = int function(git_filter *self);
33 alias git_filter_shutdown_fn = void function(git_filter *self);
34 alias git_filter_check_fn = int function(
35 	git_filter  *self,
36 	void       **payload,
37 	const(git_filter_source)* src,
38 	const(char)* *attr_values);
39 alias git_filter_apply_fn = int function(
40 	git_filter    *self,
41 	void         **payload,
42 	git_buf       *to,
43 	const(git_buf)* from,
44 	const(git_filter_source)* src);
45 alias git_filter_cleanup_fn = void function(
46 	git_filter *self,
47 	void       *payload);
48 
49 struct git_filter {
50 	uint                   version_ = GIT_FILTER_VERSION;
51 
52 	const(char)*           attributes;
53 
54 	git_filter_init_fn     initialize;
55 	git_filter_shutdown_fn shutdown;
56 	git_filter_check_fn    check;
57 	git_filter_apply_fn    apply;
58 	git_filter_cleanup_fn  cleanup;
59 }
60 
61 enum GIT_FILTER_VERSION = 1;
62 
63 int git_filter_register(
64 	const(char)* name, git_filter *filter, int priority);
65 int git_filter_unregister(const(char)* name);