]> git.ipfire.org Git - thirdparty/git.git/commitdiff
oid-array: make sort function public
authorJeff King <peff@peff.net>
Fri, 4 Dec 2020 18:52:07 +0000 (13:52 -0500)
committerJunio C Hamano <gitster@pobox.com>
Fri, 4 Dec 2020 21:55:14 +0000 (13:55 -0800)
We sort the oid-array as a side effect of calling the lookup or
unique-iteration functions. But callers may want to sort it themselves
(especially as we add new iteration options in future patches).

We'll also move the check of the "sorted" flag into the sort function,
so callers don't have to remember to check it.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
oid-array.c
oid-array.h

index 8657a5cedfa68cbc3711d4b288e514978ff5b6df..29f718d83512d8b4aa1da6c8dbd47f30c2b6c434 100644 (file)
@@ -14,8 +14,10 @@ static int void_hashcmp(const void *a, const void *b)
        return oidcmp(a, b);
 }
 
-static void oid_array_sort(struct oid_array *array)
+void oid_array_sort(struct oid_array *array)
 {
+       if (array->sorted)
+               return;
        QSORT(array->oid, array->nr, void_hashcmp);
        array->sorted = 1;
 }
@@ -28,8 +30,7 @@ static const unsigned char *sha1_access(size_t index, void *table)
 
 int oid_array_lookup(struct oid_array *array, const struct object_id *oid)
 {
-       if (!array->sorted)
-               oid_array_sort(array);
+       oid_array_sort(array);
        return sha1_pos(oid->hash, array->oid, array->nr, sha1_access);
 }
 
@@ -64,8 +65,7 @@ int oid_array_for_each_unique(struct oid_array *array,
 {
        size_t i;
 
-       if (!array->sorted)
-               oid_array_sort(array);
+       oid_array_sort(array);
 
        for (i = 0; i < array->nr; i++) {
                int ret;
index 2c8b64c3932250d1b532b568a6e28d4a10b64978..6a22c0ac94021d35d4bc32d7d0f9f1942cfc0164 100644 (file)
@@ -106,4 +106,9 @@ void oid_array_filter(struct oid_array *array,
                      for_each_oid_fn want,
                      void *cbdata);
 
+/**
+ * Sort the array in order of ascending object id.
+ */
+void oid_array_sort(struct oid_array *array);
+
 #endif /* OID_ARRAY_H */