From 3377cd7e180959f3265d0b91f630bbb73436bb09 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 12 May 2015 11:29:29 +0200 Subject: [PATCH] libnm: add _nm_utils_ptrarray_find_first() utility function --- libnm-core/nm-core-internal.h | 2 ++ libnm-core/nm-utils.c | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/libnm-core/nm-core-internal.h b/libnm-core/nm-core-internal.h index 76dc9355ca..27288df022 100644 --- a/libnm-core/nm-core-internal.h +++ b/libnm-core/nm-core-internal.h @@ -112,6 +112,8 @@ GPtrArray *_nm_utils_copy_array (const GPtrArray *array, GDestroyNotify free_func); GPtrArray *_nm_utils_copy_object_array (const GPtrArray *array); +gssize _nm_utils_ptrarray_find_first (gpointer *list, gssize len, gconstpointer needle); + gboolean _nm_utils_string_in_list (const char *str, const char **valid_strings); diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c index 4a02c98c6e..8ce59b0eeb 100644 --- a/libnm-core/nm-utils.c +++ b/libnm-core/nm-utils.c @@ -631,6 +631,32 @@ _nm_utils_copy_object_array (const GPtrArray *array) return _nm_utils_copy_array (array, g_object_ref, g_object_unref); } +/* have @list of type 'gpointer *' instead of 'gconstpointer *' to + * reduce the necessity for annoying const-casts. */ +gssize +_nm_utils_ptrarray_find_first (gpointer *list, gssize len, gconstpointer needle) +{ + gssize i; + + if (len == 0) + return -1; + + if (len > 0) { + g_return_val_if_fail (list, -1); + for (i = 0; i < len; i++) { + if (list[i] == needle) + return i; + } + } else { + g_return_val_if_fail (needle, -1); + for (i = 0; list && list[i]; i++) { + if (list[i] == needle) + return i; + } + } + return -1; +} + GVariant * _nm_utils_bytes_to_dbus (const GValue *prop_value) {