From f427909bf833ce88320d4e1875c5de1c079cebbb Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 19 Jan 2016 16:43:51 +0100 Subject: [PATCH] shared: add NM_GOBJECT_PROPERTIES_DEFINE() Helper macros to define GObject property enum, the obj_properties array, and a _notify() function. We should move away from invoking property changed notifications by string, as we already do for signals. This macro simplifies the implementation of establishes a pattern for naming and usage. --- shared/nm-macros-internal.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/shared/nm-macros-internal.h b/shared/nm-macros-internal.h index 7bddb4bd84..c178758bb6 100644 --- a/shared/nm-macros-internal.h +++ b/shared/nm-macros-internal.h @@ -196,6 +196,23 @@ /*****************************************************************************/ +#define NM_GOBJECT_PROPERTIES_DEFINE(obj_type, ...) \ +typedef enum { \ + _PROPERTY_ENUMS_0, \ + __VA_ARGS__ \ + _PROPERTY_ENUMS_LAST, \ +} _PropertyEnums; \ +static GParamSpec *obj_properties[_PROPERTY_ENUMS_LAST] = { NULL, }; \ +static inline void \ +_notify (obj_type *obj, _PropertyEnums prop) \ +{ \ + nm_assert (G_IS_OBJECT (obj)); \ + nm_assert ((gsize) prop < G_N_ELEMENTS (obj_properties)); \ + g_object_notify_by_pspec ((GObject *) obj, obj_properties[prop]); \ +} + +/*****************************************************************************/ + static inline gboolean nm_clear_g_source (guint *id) {