554544276a
There has been a push to remove extern from function declarations. Remove some instances of "extern" for function declarations which are caught by Coccinelle. Note that Coccinelle has some difficulty with processing functions with `__attribute__` or varargs so some `extern` declarations are left behind to be dealt with in a future patch. This was the Coccinelle patch used: @@ type T; identifier f; @@ - extern T f(...); and it was run with: $ git ls-files \*.{c,h} | grep -v ^compat/ | xargs spatch --sp-file contrib/coccinelle/noextern.cocci --in-place Files under `compat/` are intentionally excluded as some are directly copied from external sources and we should avoid churning them as much as possible. Signed-off-by: Denton Liu <liu.denton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
64 lines
1.7 KiB
C
64 lines
1.7 KiB
C
#ifndef LINE_LOG_H
|
|
#define LINE_LOG_H
|
|
|
|
#include "diffcore.h"
|
|
|
|
struct rev_info;
|
|
struct commit;
|
|
|
|
/* A range [start,end]. Lines are numbered starting at 0, and the
|
|
* ranges include start but exclude end. */
|
|
struct range {
|
|
long start, end;
|
|
};
|
|
|
|
/* A set of ranges. The ranges must always be disjoint and sorted. */
|
|
struct range_set {
|
|
unsigned int alloc, nr;
|
|
struct range *ranges;
|
|
};
|
|
|
|
/* A diff, encoded as the set of pre- and post-image ranges where the
|
|
* files differ. A pair of ranges corresponds to a hunk. */
|
|
struct diff_ranges {
|
|
struct range_set parent;
|
|
struct range_set target;
|
|
};
|
|
|
|
void range_set_init(struct range_set *, size_t prealloc);
|
|
void range_set_release(struct range_set *);
|
|
/* Range includes start; excludes end */
|
|
void range_set_append_unsafe(struct range_set *, long start, long end);
|
|
/* New range must begin at or after end of last added range */
|
|
void range_set_append(struct range_set *, long start, long end);
|
|
/*
|
|
* In-place pass of sorting and merging the ranges in the range set,
|
|
* to sort and make the ranges disjoint.
|
|
*/
|
|
void sort_and_merge_range_set(struct range_set *);
|
|
|
|
/* Linked list of interesting files and their associated ranges. The
|
|
* list must be kept sorted by path.
|
|
*
|
|
* For simplicity, even though this is highly redundant, each
|
|
* line_log_data owns its 'path'.
|
|
*/
|
|
struct line_log_data {
|
|
struct line_log_data *next;
|
|
char *path;
|
|
char status;
|
|
struct range_set ranges;
|
|
int arg_alloc, arg_nr;
|
|
const char **args;
|
|
struct diff_filepair *pair;
|
|
struct diff_ranges diff;
|
|
};
|
|
|
|
void line_log_init(struct rev_info *rev, const char *prefix, struct string_list *args);
|
|
|
|
int line_log_filter(struct rev_info *rev);
|
|
|
|
int line_log_print(struct rev_info *rev, struct commit *commit);
|
|
|
|
#endif /* LINE_LOG_H */
|