mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-05 04:08:01 +02:00
nm-setting: add internal gendata API to clear value(s)
The filter function in nm_setting_gendata_clear_all() is useful for when you want to only clear values according to a predicate, if no such function is supplied all values will be cleared. https://bugzilla.redhat.com/show_bug.cgi?id=1614700
This commit is contained in:
parent
572f82a77b
commit
e08c3a6e18
2 changed files with 50 additions and 0 deletions
|
|
@ -310,6 +310,8 @@ gboolean _nm_setting_get_property (NMSetting *setting, const char *name, GValue
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
typedef gboolean (*nm_setting_gendata_filter_fcn)(const char *name);
|
||||
|
||||
GHashTable *_nm_setting_gendata_hash (NMSetting *setting,
|
||||
gboolean create_if_necessary);
|
||||
|
||||
|
|
@ -334,6 +336,12 @@ const char *const*nm_setting_gendata_get_all_names (NMSetting *setting,
|
|||
|
||||
GVariant *const*nm_setting_gendata_get_all_values (NMSetting *setting);
|
||||
|
||||
gboolean nm_setting_gendata_clear (NMSetting *setting,
|
||||
const char *optname);
|
||||
|
||||
gboolean nm_setting_gendata_clear_all (NMSetting *setting,
|
||||
nm_setting_gendata_filter_fcn filter);
|
||||
|
||||
gboolean nm_setting_gendata_get_uint32 (NMSetting *setting,
|
||||
const char *optname,
|
||||
guint32 *out_value);
|
||||
|
|
|
|||
|
|
@ -2649,6 +2649,48 @@ nm_setting_gendata_set_uint32 (NMSetting *setting,
|
|||
g_variant_ref_sink (g_variant_new_uint32 (value)));
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_setting_gendata_clear (NMSetting *setting,
|
||||
const char *optname)
|
||||
{
|
||||
GHashTable *ht;
|
||||
|
||||
nm_assert (NM_IS_SETTING (setting));
|
||||
nm_assert (nm_str_not_empty (optname));
|
||||
|
||||
ht = _nm_setting_gendata_hash (setting, FALSE);
|
||||
if (!ht)
|
||||
return FALSE;
|
||||
|
||||
return g_hash_table_remove (ht, optname);
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_setting_gendata_clear_all (NMSetting *setting,
|
||||
nm_setting_gendata_filter_fcn filter)
|
||||
{
|
||||
GHashTable *ht;
|
||||
const char *name;
|
||||
GHashTableIter iter;
|
||||
gboolean changed = FALSE;
|
||||
|
||||
nm_assert (NM_IS_SETTING (setting));
|
||||
|
||||
ht = _nm_setting_gendata_hash (setting, FALSE);
|
||||
if (!ht)
|
||||
return FALSE;
|
||||
|
||||
g_hash_table_iter_init (&iter, ht);
|
||||
while (g_hash_table_iter_next (&iter, (gpointer *) &name, NULL)) {
|
||||
if (!filter || filter (name)) {
|
||||
g_hash_table_iter_remove (&iter);
|
||||
changed = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue