diff options
author | Stefan Beller <sbeller@google.com> | 2018-11-29 01:27:48 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-12-05 03:42:31 +0100 |
commit | 161b1cf3bdca7fecf5ec03ffdb74260312cd0229 (patch) | |
tree | 0a73ef426d7ec7fb901e33540b5db90a08f8c36d /sha1-array.c | |
parent | Merge branch 'es/format-patch-range-diff-fix-fix' (diff) | |
download | git-161b1cf3bdca7fecf5ec03ffdb74260312cd0229.tar.xz git-161b1cf3bdca7fecf5ec03ffdb74260312cd0229.zip |
sha1-array: provide oid_array_filter
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'sha1-array.c')
-rw-r--r-- | sha1-array.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/sha1-array.c b/sha1-array.c index b94e0ec0f5..d922e94e3f 100644 --- a/sha1-array.c +++ b/sha1-array.c @@ -77,3 +77,20 @@ int oid_array_for_each_unique(struct oid_array *array, } return 0; } + +void oid_array_filter(struct oid_array *array, + for_each_oid_fn want, + void *cb_data) +{ + unsigned nr = array->nr, src, dst; + struct object_id *oids = array->oid; + + for (src = dst = 0; src < nr; src++) { + if (want(&oids[src], cb_data)) { + if (src != dst) + oidcpy(&oids[dst], &oids[src]); + dst++; + } + } + array->nr = dst; +} |