log -L: test merge of parallel modify/rename
[git/git.git] / line-log.h
CommitLineData
12da1d1f
TR
1#ifndef LINE_LOG_H
2#define LINE_LOG_H
3
4#include "diffcore.h"
5
6struct rev_info;
7struct commit;
8
9/* A range [start,end]. Lines are numbered starting at 0, and the
10 * ranges include start but exclude end. */
11struct range {
12 long start, end;
13};
14
15/* A set of ranges. The ranges must always be disjoint and sorted. */
16struct 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. */
23struct 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
29 * list must be kept sorted by spec->path */
30struct line_log_data {
31 struct line_log_data *next;
32 struct diff_filespec *spec;
33 char status;
34 struct range_set ranges;
35 int arg_alloc, arg_nr;
36 const char **args;
37 struct diff_filepair *pair;
38 struct diff_ranges diff;
39};
40
41extern void line_log_data_init(struct line_log_data *r);
42
43extern void line_log_init(struct rev_info *rev, const char *prefix, struct string_list *args);
44
45extern int line_log_filter(struct rev_info *rev);
46
47extern int line_log_print(struct rev_info *rev, struct commit *commit);
48
49#endif /* LINE_LOG_H */