mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-29 10:20:11 +01:00
shared: add nm_cmp_int2ptr_p_with_data() helper
A cmp() implementation, for sorting an array with pointers, where each
pointer is an inteter according to GPOINTER_TO_INT().
That cames for example handy, if you have a GHashTable with keys
GINT_TO_POINTER(). Then you get the list of keys via
g_hash_table_get_keys_as_array() and want to sort them.
(cherry picked from commit 901aa0315b)
This commit is contained in:
parent
fb64e268bb
commit
f2590e86b3
1 changed files with 19 additions and 0 deletions
|
|
@ -1020,6 +1020,25 @@ nm_cmp_uint32_p_with_data (gconstpointer p_a, gconstpointer p_b, gpointer user_d
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
nm_cmp_int2ptr_p_with_data (gconstpointer p_a, gconstpointer p_b, gpointer user_data)
|
||||
{
|
||||
/* p_a and p_b are two pointers to a pointer, where the pointer is
|
||||
* interpreted as a integer using GPOINTER_TO_INT().
|
||||
*
|
||||
* That is the case of a hash-table that uses GINT_TO_POINTER() to
|
||||
* convert integers as pointers, and the resulting keys-as-array
|
||||
* array. */
|
||||
const int a = GPOINTER_TO_INT (*((gconstpointer *) p_a));
|
||||
const int b = GPOINTER_TO_INT (*((gconstpointer *) p_b));
|
||||
|
||||
if (a < b)
|
||||
return -1;
|
||||
if (a > b)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/* Taken from systemd's UNIQ_T and UNIQ macros. */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue