THIS IS A TEST INSTANCE ONLY! REPOSITORIES CAN BE DELETED AT ANY TIME!

Browse Source

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>
tags/v2.21.0-rc0
Stefan Beller Junio C Hamano 11 months ago
parent
commit
161b1cf3bd
3 changed files with 25 additions and 0 deletions
  1. +5
    -0
      Documentation/technical/api-oid-array.txt
  2. +17
    -0
      sha1-array.c
  3. +3
    -0
      sha1-array.h

+ 5
- 0
Documentation/technical/api-oid-array.txt View File

@@ -48,6 +48,11 @@ Functions
is not sorted, this function has the side effect of sorting
it.

`oid_array_filter`::
Apply the callback function `want` to each entry in the array,
retaining only the entries for which the function returns true.
Preserve the order of the entries that are retained.

Examples
--------



+ 17
- 0
sha1-array.c View File

@@ -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;
}

+ 3
- 0
sha1-array.h View File

@@ -22,5 +22,8 @@ int oid_array_for_each(struct oid_array *array,
int oid_array_for_each_unique(struct oid_array *array,
for_each_oid_fn fn,
void *data);
void oid_array_filter(struct oid_array *array,
for_each_oid_fn want,
void *cbdata);

#endif /* SHA1_ARRAY_H */

Loading…
Cancel
Save