зеркало из https://github.com/microsoft/git.git
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>
This commit is contained in:
Родитель
965798d1f2
Коммит
161b1cf3bd
|
@ -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
sha1-array.c
17
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;
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
Загрузка…
Ссылка в новой задаче