blob: fb4b1e7d319ff3a4e66dfa1c853a321e90b5b345 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
 * The side by side diff view, which ui-diff.c renders through when a reader
 * asks for that layout rather than the unified one. Every call below is made
 * as ui-diff.c walks a diff, so nothing here is a page of its own.
 */

#ifndef CGIT_UI_SSDIFF_H
#define CGIT_UI_SSDIFF_H

// The longest old line and the longest new line the view will compare
// character by character. The comparison fills a cell for every pair of
// characters, so its cost is the product of the two, and a line past the limit
// is shown whole instead.
#ifndef MAX_SSDIFF_M
#define MAX_SSDIFF_M 128
#endif

#ifndef MAX_SSDIFF_N
#define MAX_SSDIFF_N 128
#endif
#define MAX_SSDIFF_SIZE ((MAX_SSDIFF_M) * (MAX_SSDIFF_N))

extern void cgit_ssdiff_line_cb(char *line, int len);

/*
 * Open the group of rows a file pair's diff occupies, header row included, and
 * close it again after the last line. The new path lands on the group as
 * data-path, and the rows read the pair until the footer, so it has to live
 * that long.
 */
extern void cgit_ssdiff_header_begin(struct diff_filepair *pair);
extern void cgit_ssdiff_header_end(void);
extern void cgit_ssdiff_footer(void);

#endif // CGIT_UI_SSDIFF_H