iterator: mandate advance_over

Since the three iterators implement `advance_over` differently,
mandate it and implement each.
This commit is contained in:
Edward Thomson 2016-03-21 16:51:45 -04:00
parent 0ef0b71ca5
commit 247e3b4305
2 changed files with 11 additions and 6 deletions

View File

@ -1070,6 +1070,15 @@ static int tree_iterator_advance_into(
return tree_iterator_advance(out, i); return tree_iterator_advance(out, i);
} }
static int tree_iterator_advance_over(
const git_index_entry **out,
git_iterator_status_t *status,
git_iterator *i)
{
*status = GIT_ITERATOR_STATUS_NORMAL;
return git_iterator_advance(out, i);
}
static void tree_iterator_clear(tree_iterator *iter) static void tree_iterator_clear(tree_iterator *iter)
{ {
while (iter->frames.size) while (iter->frames.size)
@ -1143,7 +1152,7 @@ int git_iterator_for_tree(
tree_iterator_current, tree_iterator_current,
tree_iterator_advance, tree_iterator_advance,
tree_iterator_advance_into, tree_iterator_advance_into,
NULL, /* advance_over */ tree_iterator_advance_over,
tree_iterator_reset, tree_iterator_reset,
tree_iterator_reset_range, tree_iterator_reset_range,
tree_iterator_at_end, tree_iterator_at_end,

View File

@ -217,11 +217,7 @@ GIT_INLINE(int) git_iterator_advance_over(
git_iterator_status_t *status, git_iterator_status_t *status,
git_iterator *iter) git_iterator *iter)
{ {
if (iter->cb->advance_over) return iter->cb->advance_over(entry, status, iter);
return iter->cb->advance_over(entry, status, iter);
*status = GIT_ITERATOR_STATUS_NORMAL;
return git_iterator_advance(entry, iter);
} }
/** /**