| /* |
| * 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 "buffer.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 *, 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_buf *); |
| |
| 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 |