]>
Commit | Line | Data |
---|---|---|
12da1d1f TR |
1 | #ifndef LINE_LOG_H |
2 | #define LINE_LOG_H | |
3 | ||
4 | #include "diffcore.h" | |
5 | ||
6 | struct rev_info; | |
7 | struct commit; | |
8 | ||
9 | /* A range [start,end]. Lines are numbered starting at 0, and the | |
10 | * ranges include start but exclude end. */ | |
11 | struct range { | |
12 | long start, end; | |
13 | }; | |
14 | ||
15 | /* A set of ranges. The ranges must always be disjoint and sorted. */ | |
16 | struct range_set { | |
17 | int alloc, nr; | |
18 | struct range *ranges; | |
19 | }; | |
20 | ||
21 | /* A diff, encoded as the set of pre- and post-image ranges where the | |
22 | * files differ. A pair of ranges corresponds to a hunk. */ | |
23 | struct diff_ranges { | |
24 | struct range_set parent; | |
25 | struct range_set target; | |
26 | }; | |
27 | ||
28 | /* Linked list of interesting files and their associated ranges. The | |
31c61918 TR |
29 | * list must be kept sorted by path. |
30 | * | |
31 | * For simplicity, even though this is highly redundant, each | |
32 | * line_log_data owns its 'path'. | |
33 | */ | |
12da1d1f TR |
34 | struct line_log_data { |
35 | struct line_log_data *next; | |
31c61918 | 36 | char *path; |
12da1d1f TR |
37 | char status; |
38 | struct range_set ranges; | |
39 | int arg_alloc, arg_nr; | |
40 | const char **args; | |
41 | struct diff_filepair *pair; | |
42 | struct diff_ranges diff; | |
43 | }; | |
44 | ||
45 | extern void line_log_data_init(struct line_log_data *r); | |
46 | ||
47 | extern void line_log_init(struct rev_info *rev, const char *prefix, struct string_list *args); | |
48 | ||
49 | extern int line_log_filter(struct rev_info *rev); | |
50 | ||
51 | extern int line_log_print(struct rev_info *rev, struct commit *commit); | |
52 | ||
53 | #endif /* LINE_LOG_H */ |