Message ID | 20180917213559.126404-3-sbeller@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fetch: make sure submodule oids are fetched | expand |
On Mon, Sep 17, 2018 at 2:36 PM Stefan Beller <sbeller@google.com> wrote: > > Helped-by: Junio C Hamano <gitster@pobox.com> > Signed-off-by: Stefan Beller <sbeller@google.com> > --- > sha1-array.c | 17 +++++++++++++++++ > sha1-array.h | 9 +++++++++ > 2 files changed, 26 insertions(+) > > diff --git a/sha1-array.c b/sha1-array.c > index 265941fbf40..67db5eeec9a 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->oids; Blargh :-( I made this last minute "pull oids out to be more like the object_array_filter" and typo'd without compile checking. Please discard this series. Stefan
diff --git a/sha1-array.c b/sha1-array.c index 265941fbf40..67db5eeec9a 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->oids; + + 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; +} diff --git a/sha1-array.h b/sha1-array.h index 232bf950172..ae059ca0431 100644 --- a/sha1-array.h +++ b/sha1-array.h @@ -23,4 +23,13 @@ int oid_array_for_each_unique(struct oid_array *array, for_each_oid_fn fn, void *data); +/* + * Apply want to each entry in array, retaining only the entries for + * which the function returns true. Preserve the order of the entries + * that are retained. + */ +int oid_array_filter(struct oid_array *array, + for_each_oid_fn want, + void *cbdata); + #endif /* SHA1_ARRAY_H */
Helped-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Stefan Beller <sbeller@google.com> --- sha1-array.c | 17 +++++++++++++++++ sha1-array.h | 9 +++++++++ 2 files changed, 26 insertions(+)