diff options
author | Thomas Haller <thaller@redhat.com> | 2019-06-23 17:53:52 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-06-26 09:53:54 +0200 |
commit | ec707f56c1ea951b808a90a595019de021b092d9 (patch) | |
tree | 96cae12988e5940b5eadc9a49be81d725c0a867d /shared | |
parent | fcaf7994f2011b38487c472b6ebfee78bf1a8140 (diff) | |
download | NetworkManager-ec707f56c1ea951b808a90a595019de021b092d9.tar.gz |
shared: add nm_utils_hashtable_same_keys() util
Diffstat (limited to 'shared')
-rw-r--r-- | shared/nm-glib-aux/nm-shared-utils.c | 29 | ||||
-rw-r--r-- | shared/nm-glib-aux/nm-shared-utils.h | 3 |
2 files changed, 32 insertions, 0 deletions
diff --git a/shared/nm-glib-aux/nm-shared-utils.c b/shared/nm-glib-aux/nm-shared-utils.c index 49037ed7b4..472a4c484f 100644 --- a/shared/nm-glib-aux/nm-shared-utils.c +++ b/shared/nm-glib-aux/nm-shared-utils.c @@ -2282,6 +2282,35 @@ nm_utils_hash_keys_to_array (GHashTable *hash, return keys; } +gboolean +nm_utils_hashtable_same_keys (const GHashTable *a, + const GHashTable *b) +{ + GHashTableIter h; + const char *k; + + if (a == b) + return TRUE; + if (!a || !b) + return FALSE; + if (g_hash_table_size ((GHashTable *) a) != g_hash_table_size ((GHashTable *) b)) + return FALSE; + + g_hash_table_iter_init (&h, (GHashTable *) a); + while (g_hash_table_iter_next (&h, (gpointer) &k, NULL)) { + if (!g_hash_table_contains ((GHashTable *) b, k)) + return FALSE; + } + +#if NM_MORE_ASSERTS > 5 + g_hash_table_iter_init (&h, (GHashTable *) b); + while (g_hash_table_iter_next (&h, (gpointer) &k, NULL)) + nm_assert (g_hash_table_contains ((GHashTable *) a, k)); +#endif + + return TRUE; +} + char ** nm_utils_strv_make_deep_copied (const char **strv) { diff --git a/shared/nm-glib-aux/nm-shared-utils.h b/shared/nm-glib-aux/nm-shared-utils.h index a8f2966b38..e65d1be683 100644 --- a/shared/nm-glib-aux/nm-shared-utils.h +++ b/shared/nm-glib-aux/nm-shared-utils.h @@ -966,6 +966,9 @@ nm_utils_strdict_get_keys (const GHashTable *hash, out_length); } +gboolean nm_utils_hashtable_same_keys (const GHashTable *a, + const GHashTable *b); + char **nm_utils_strv_make_deep_copied (const char **strv); char **nm_utils_strv_make_deep_copied_n (const char **strv, gsize len); |