From 830c9701969a166e126c2bd045e81403f2f951b0 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 15 Jun 2021 08:37:56 +0200 Subject: [PATCH] glib-aux: add nm_utils_ptrarray_is_sorted() helper (cherry picked from commit f51d3862f95c5b67d8f8cf2d0d093182a2cd94ee) --- src/libnm-glib-aux/nm-shared-utils.c | 22 ++++++++++++++++++++++ src/libnm-glib-aux/nm-shared-utils.h | 6 ++++++ 2 files changed, 28 insertions(+) diff --git a/src/libnm-glib-aux/nm-shared-utils.c b/src/libnm-glib-aux/nm-shared-utils.c index 7a49298ec3..ff1b705006 100644 --- a/src/libnm-glib-aux/nm-shared-utils.c +++ b/src/libnm-glib-aux/nm-shared-utils.c @@ -3948,6 +3948,28 @@ nm_utils_ptrarray_find_first(gconstpointer *list, gssize len, gconstpointer need /*****************************************************************************/ +gboolean +nm_utils_ptrarray_is_sorted(gconstpointer * list, + gsize len, + gboolean require_strict, + GCompareDataFunc cmpfcn, + gpointer user_data) +{ + gsize i; + + for (i = 1; i < len; i++) { + int c; + + c = cmpfcn(list[i - 1], list[i], user_data); + if (G_LIKELY(c < 0)) + continue; + + if (c > 0 || require_strict) + return FALSE; + } + return TRUE; +} + gssize nm_utils_ptrarray_find_binary_search(gconstpointer * list, gsize len, diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h index 0c2303656e..344fbb83f3 100644 --- a/src/libnm-glib-aux/nm-shared-utils.h +++ b/src/libnm-glib-aux/nm-shared-utils.h @@ -2133,6 +2133,12 @@ nm_g_hash_table_remove(GHashTable *hash, gconstpointer key) /*****************************************************************************/ +gboolean nm_utils_ptrarray_is_sorted(gconstpointer * list, + gsize len, + gboolean require_strict, + GCompareDataFunc cmpfcn, + gpointer user_data); + gssize nm_utils_ptrarray_find_binary_search(gconstpointer * list, gsize len, gconstpointer needle,