diff.c: move the diff filter bits definitions up a bit
This prepares for a more careful handling of the `--diff-filter` options over the next few commits. This commit is best viewed with `--color-moved`. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d843e319f8
commit
4d4d4eaa7b
74
diff.c
74
diff.c
@ -4570,6 +4570,43 @@ void repo_diff_setup(struct repository *r, struct diff_options *options)
|
||||
prep_parse_options(options);
|
||||
}
|
||||
|
||||
static const char diff_status_letters[] = {
|
||||
DIFF_STATUS_ADDED,
|
||||
DIFF_STATUS_COPIED,
|
||||
DIFF_STATUS_DELETED,
|
||||
DIFF_STATUS_MODIFIED,
|
||||
DIFF_STATUS_RENAMED,
|
||||
DIFF_STATUS_TYPE_CHANGED,
|
||||
DIFF_STATUS_UNKNOWN,
|
||||
DIFF_STATUS_UNMERGED,
|
||||
DIFF_STATUS_FILTER_AON,
|
||||
DIFF_STATUS_FILTER_BROKEN,
|
||||
'\0',
|
||||
};
|
||||
|
||||
static unsigned int filter_bit['Z' + 1];
|
||||
|
||||
static void prepare_filter_bits(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!filter_bit[DIFF_STATUS_ADDED]) {
|
||||
for (i = 0; diff_status_letters[i]; i++)
|
||||
filter_bit[(int) diff_status_letters[i]] = (1 << i);
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned filter_bit_tst(char status, const struct diff_options *opt)
|
||||
{
|
||||
return opt->filter & filter_bit[(int) status];
|
||||
}
|
||||
|
||||
unsigned diff_filter_bit(char status)
|
||||
{
|
||||
prepare_filter_bits();
|
||||
return filter_bit[(int) status];
|
||||
}
|
||||
|
||||
void diff_setup_done(struct diff_options *options)
|
||||
{
|
||||
unsigned check_mask = DIFF_FORMAT_NAME |
|
||||
@ -4774,43 +4811,6 @@ static int parse_dirstat_opt(struct diff_options *options, const char *params)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const char diff_status_letters[] = {
|
||||
DIFF_STATUS_ADDED,
|
||||
DIFF_STATUS_COPIED,
|
||||
DIFF_STATUS_DELETED,
|
||||
DIFF_STATUS_MODIFIED,
|
||||
DIFF_STATUS_RENAMED,
|
||||
DIFF_STATUS_TYPE_CHANGED,
|
||||
DIFF_STATUS_UNKNOWN,
|
||||
DIFF_STATUS_UNMERGED,
|
||||
DIFF_STATUS_FILTER_AON,
|
||||
DIFF_STATUS_FILTER_BROKEN,
|
||||
'\0',
|
||||
};
|
||||
|
||||
static unsigned int filter_bit['Z' + 1];
|
||||
|
||||
static void prepare_filter_bits(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!filter_bit[DIFF_STATUS_ADDED]) {
|
||||
for (i = 0; diff_status_letters[i]; i++)
|
||||
filter_bit[(int) diff_status_letters[i]] = (1 << i);
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned filter_bit_tst(char status, const struct diff_options *opt)
|
||||
{
|
||||
return opt->filter & filter_bit[(int) status];
|
||||
}
|
||||
|
||||
unsigned diff_filter_bit(char status)
|
||||
{
|
||||
prepare_filter_bits();
|
||||
return filter_bit[(int) status];
|
||||
}
|
||||
|
||||
static int diff_opt_diff_filter(const struct option *option,
|
||||
const char *optarg, int unset)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user