summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2016-04-28 14:10:06 +0200
committerThomas Haller <thaller@redhat.com>2016-04-28 14:36:24 +0200
commit8bc895d5aa27e70a4302598d6a7c39b786acf4a0 (patch)
tree9584b48392c5d700af046473c0486788e0ef18b5
parentd27a80c4df243d3d73b902440f2d4a1f47961476 (diff)
downloadNetworkManager-8bc895d5aa27e70a4302598d6a7c39b786acf4a0.tar.gz
manager: embed NMManagerPrivate data directly into NMManager struct
For a type to be inheritable, its public struct (NMManager) must be known. As nobody inherits NMManager, we can make it private. As the struct is private anyway, we can also reuse it for the private data directly, instead of registering NMManagerPrivate in the manager class. There are advantages and disadvantages: + simplifies debugging, as the self pointer also contains the private data. + removes a small overhead of tracking the private data separately - is a different way to implement the class, contrary to many other classes. - inheriting from the class later requires reverting this change (but we will never inherit from NMManager). - as it is now, nobody uses the priv field directly and we still access it via NM_MANAGER_GET_PRIVATE(self). However, the presence of the priv field might encourage us to use it directly -- which increases above disadvantages.
-rw-r--r--src/nm-manager.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/nm-manager.c b/src/nm-manager.c
index 7a94800626..2edf3fda49 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -140,13 +140,14 @@ typedef struct {
struct _NMManager {
NMExportedObject parent;
+ NMManagerPrivate priv;
};
typedef struct {
NMExportedObjectClass parent;
} NMManagerClass;
-#define NM_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_MANAGER, NMManagerPrivate))
+#define NM_MANAGER_GET_PRIVATE(o) ({ nm_assert (NM_IS_MANAGER (o)); &((o)->priv); })
G_DEFINE_TYPE (NMManager, nm_manager, NM_TYPE_EXPORTED_OBJECT)
@@ -1942,11 +1943,12 @@ factory_component_added_cb (NMDeviceFactory *factory,
GObject *component,
gpointer user_data)
{
+ NMManager *self = user_data;
GSList *iter;
- g_return_val_if_fail (NM_IS_MANAGER (user_data), FALSE);
+ g_return_val_if_fail (self, FALSE);
- for (iter = NM_MANAGER_GET_PRIVATE (user_data)->devices; iter; iter = iter->next) {
+ for (iter = NM_MANAGER_GET_PRIVATE (self)->devices; iter; iter = iter->next) {
if (nm_device_notify_component_added ((NMDevice *) iter->data, component))
return TRUE;
}
@@ -5465,8 +5467,6 @@ nm_manager_class_init (NMManagerClass *manager_class)
GObjectClass *object_class = G_OBJECT_CLASS (manager_class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (manager_class);
- g_type_class_add_private (manager_class, sizeof (NMManagerPrivate));
-
exported_object_class->export_path = NM_DBUS_PATH;
/* virtual methods */