summaryrefslogtreecommitdiff
path: root/telepathy-glib/dbus-properties-mixin.h
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2008-05-27 12:09:24 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2008-05-27 12:09:24 +0000
commit220a5e8efc45671685e496e0be14c0269c33a5bb (patch)
treea8a825ee75d3bb78e4976fb5fcaa5f6f00c6fb57 /telepathy-glib/dbus-properties-mixin.h
parent232801ffa9dc1281c53170e3d50a33ae85a376f9 (diff)
downloadtelepathy-glib-220a5e8efc45671685e496e0be14c0269c33a5bb.tar.gz
TpDBusPropertiesMixin: implement a cleaner way for mixins to hook in property implementations
20080527120924-53eee-1a225ec9dda9ac023be478de6c5dfd0d22dfa517.gz
Diffstat (limited to 'telepathy-glib/dbus-properties-mixin.h')
-rw-r--r--telepathy-glib/dbus-properties-mixin.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/telepathy-glib/dbus-properties-mixin.h b/telepathy-glib/dbus-properties-mixin.h
index af6d098be..d480fef17 100644
--- a/telepathy-glib/dbus-properties-mixin.h
+++ b/telepathy-glib/dbus-properties-mixin.h
@@ -79,6 +79,12 @@ typedef struct {
gpointer mixin_priv;
} TpDBusPropertiesMixinPropImpl;
+/* this union is to keep ABI if sizeof (GCallback) > sizeof (void *) */
+typedef union {
+ GCallback _padding;
+ gpointer priv;
+} _TpDBusPropertiesMixinPaddedPointer;
+
typedef struct {
const gchar *name;
TpDBusPropertiesMixinGetter getter;
@@ -87,7 +93,7 @@ typedef struct {
/*<private>*/
GCallback _1;
GCallback _2;
- GCallback _3;
+ _TpDBusPropertiesMixinPaddedPointer mixin_next;
gpointer mixin_priv;
} TpDBusPropertiesMixinIfaceImpl;
@@ -108,6 +114,10 @@ typedef struct _TpDBusPropertiesMixinClass TpDBusPropertiesMixinClass;
void tp_dbus_properties_mixin_class_init (GObjectClass *cls,
gsize offset);
+void tp_dbus_properties_mixin_implement_interface (GObjectClass *cls,
+ GQuark iface, TpDBusPropertiesMixinGetter getter,
+ TpDBusPropertiesMixinSetter setter, TpDBusPropertiesMixinPropImpl *props);
+
void tp_dbus_properties_mixin_iface_init (gpointer g_iface,
gpointer iface_data);