mirror of
https://github.com/git/git.git
synced 2024-11-27 12:03:55 +08:00
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:
parent
965798d1f2
commit
161b1cf3bd
@ -48,6 +48,11 @@ Functions
|
|||||||
is not sorted, this function has the side effect of sorting
|
is not sorted, this function has the side effect of sorting
|
||||||
it.
|
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
|
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;
|
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,
|
int oid_array_for_each_unique(struct oid_array *array,
|
||||||
for_each_oid_fn fn,
|
for_each_oid_fn fn,
|
||||||
void *data);
|
void *data);
|
||||||
|
void oid_array_filter(struct oid_array *array,
|
||||||
|
for_each_oid_fn want,
|
||||||
|
void *cbdata);
|
||||||
|
|
||||||
#endif /* SHA1_ARRAY_H */
|
#endif /* SHA1_ARRAY_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user