libnm: initialize "name" in _nm_properties_override_gobj()

Previously, _nm_setting_class_commit() required that the "name" of a
NMSettInfoProperty is unset, when the property also has a "param_spec".
_nm_setting_class_commit() would then as first iterate over all
properties, and set the name.

In practice, all callers only initialize NMSettInfoProperty via
_nm_properties_override_gobj(). Now, let _nm_properties_override_gobj()
set the "name" right away.

Now _nm_setting_class_commit() will instead assert that the name is always
set, and that the caller takes care of that. That means, we have less to
do in _nm_setting_class_commit() (assertions aside).
This commit is contained in:
Thomas Haller 2023-10-25 17:25:26 +02:00
parent 43febd92ff
commit eb3b2d9ef6
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
2 changed files with 22 additions and 24 deletions

View file

@ -483,15 +483,23 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
g_array_append_vals(properties_override, prop_info, 1);
}
#define _nm_properties_override_gobj(properties_override, \
p_param_spec, \
p_property_type, \
... /* extra NMSettInfoProperty fields */) \
_nm_properties_override((properties_override), \
NM_SETT_INFO_PROPERTY(.name = NULL, \
.param_spec = (p_param_spec), \
.property_type = (p_property_type), \
__VA_ARGS__))
#define _nm_properties_override_gobj(properties_override, \
p_param_spec, \
p_property_type, \
... /* extra NMSettInfoProperty fields */) \
G_STMT_START \
{ \
GParamSpec *const _p_param_spec_2 = (p_param_spec); \
\
nm_assert(_p_param_spec_2); \
\
_nm_properties_override((properties_override), \
NM_SETT_INFO_PROPERTY(.name = _p_param_spec_2->name, \
.param_spec = _p_param_spec_2, \
.property_type = (p_property_type), \
__VA_ARGS__)); \
} \
G_STMT_END
#define _nm_properties_override_dbus(properties_override, \
p_name, \

View file

@ -183,9 +183,8 @@ _nm_properties_override_assert(const NMSettInfoProperty *prop_info)
{
#if NM_MORE_ASSERTS
nm_assert(prop_info);
nm_assert((!!prop_info->name) != (!!prop_info->param_spec));
nm_assert(!prop_info->param_spec || !prop_info->name
|| nm_streq0(prop_info->name, prop_info->param_spec->name));
nm_assert(prop_info->name);
nm_assert(!prop_info->param_spec || prop_info->name == prop_info->param_spec->name);
if (prop_info->property_type) {
const NMSettInfoPropertType *property_type = prop_info->property_type;
@ -361,18 +360,6 @@ _nm_setting_class_commit(NMSettingClass *setting_class,
nm_assert(override_len > 0);
for (i = 0; i < override_len; i++) {
NMSettInfoProperty *p = &nm_g_array_index(properties_override, NMSettInfoProperty, i);
nm_assert((!!p->name) != (!!p->param_spec));
if (!p->name) {
nm_assert(p->param_spec);
p->name = p->param_spec->name;
} else
nm_assert(!p->param_spec);
}
#if NM_MORE_ASSERTS > 10
property_specs =
g_object_class_list_properties(G_OBJECT_CLASS(setting_class), &n_property_specs);
@ -383,6 +370,9 @@ _nm_setting_class_commit(NMSettingClass *setting_class,
gboolean found = FALSE;
guint k;
nm_assert(p->name);
nm_assert(!p->param_spec || p->name == p->param_spec->name);
nm_assert(!_nm_sett_info_property_find_in_array(
nm_g_array_first_p(properties_override, NMSettInfoProperty),
i,