From f45ec1a076e2347ba5d63eeb2d158f87b612e5cb Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Mon, 29 Oct 2012 20:04:21 -0500 Subject: index refactoring --- src/vector.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/vector.c') diff --git a/src/vector.c b/src/vector.c index c6a644cc3..d9c4c9900 100644 --- a/src/vector.c +++ b/src/vector.c @@ -223,6 +223,20 @@ void git_vector_uniq(git_vector *v) v->length -= j - i - 1; } +void git_vector_remove_matching(git_vector *v, int (*match)(git_vector *v, size_t idx)) +{ + unsigned int i, j; + + for (i = 0, j = 0; j < v->length; ++j) { + v->contents[i] = v->contents[j]; + + if (!match(v, i)) + i++; + } + + v->length = i; +} + void git_vector_clear(git_vector *v) { assert(v); -- cgit v1.2.1