[next] telepathy-glib: pass a TpContactGroupList to TpContactGroupListInterface vfuncs

Guillaume Desmottes gdesmott at kemper.freedesktop.org
Mon May 26 06:16:25 PDT 2014


Module: telepathy-glib
Branch: next
Commit: dd54d9725b449c7dcbd0122c7999d3db99368827
URL:    http://cgit.freedesktop.org/telepathy/telepathy-glib/commit/?id=dd54d9725b449c7dcbd0122c7999d3db99368827

Author: Guillaume Desmottes <guillaume.desmottes at collabora.co.uk>
Date:   Fri May 16 11:38:41 2014 +0200

pass a TpContactGroupList to TpContactGroupListInterface vfuncs

That's the proper way to do it to keep gir happy.

https://bugs.freedesktop.org/show_bug.cgi?id=77772

---

 .../telepathy-glib/telepathy-glib-sections.txt     |    8 ++--
 examples/cm/contactlist/contact-list.c             |    8 ++--
 telepathy-glib/base-contact-list.c                 |   44 ++++++++++++++++----
 telepathy-glib/base-contact-list.h                 |   26 +++++++-----
 tests/lib/contact-list-manager.c                   |    8 ++--
 5 files changed, 65 insertions(+), 29 deletions(-)

diff --git a/docs/reference/telepathy-glib/telepathy-glib-sections.txt b/docs/reference/telepathy-glib/telepathy-glib-sections.txt
index aa59268..322714d 100644
--- a/docs/reference/telepathy-glib/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib/telepathy-glib-sections.txt
@@ -4932,13 +4932,15 @@ tp_base_contact_list_unpublish_finish
 TP_TYPE_CONTACT_GROUP_LIST
 TpContactGroupList
 TpContactGroupListInterface
+TpContactGroupListBooleanFunc
+tp_contact_group_list_false_func
 TpBaseContactListNormalizeFunc
 tp_base_contact_list_normalize_group
-TpBaseContactListDupContactGroupsFunc
+TpContactGroupListDupContactGroupsFunc
 tp_base_contact_list_dup_contact_groups
-TpBaseContactListDupGroupsFunc
+TpContactGroupListDupGroupsFunc
 tp_base_contact_list_dup_groups
-TpBaseContactListDupGroupMembersFunc
+TpContactGroupListDupGroupMembersFunc
 tp_base_contact_list_dup_group_members
 tp_base_contact_list_group_renamed
 tp_base_contact_list_groups_changed
diff --git a/examples/cm/contactlist/contact-list.c b/examples/cm/contactlist/contact-list.c
index 932a181..f09fb44 100644
--- a/examples/cm/contactlist/contact-list.c
+++ b/examples/cm/contactlist/contact-list.c
@@ -1027,7 +1027,7 @@ example_contact_list_dup_contacts (TpBaseContactList *contact_list)
 }
 
 static TpHandleSet *
-example_contact_list_dup_group_members (TpBaseContactList *contact_list,
+example_contact_list_dup_group_members (TpContactGroupList *contact_list,
     const gchar *group)
 {
   ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list);
@@ -1529,7 +1529,7 @@ example_contact_list_get_group_storage (
 }
 
 static GStrv
-example_contact_list_dup_groups (TpBaseContactList *contact_list)
+example_contact_list_dup_groups (TpContactGroupList *contact_list)
 {
   ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list);
   GPtrArray *tags = g_ptr_array_sized_new (
@@ -1547,10 +1547,10 @@ example_contact_list_dup_groups (TpBaseContactList *contact_list)
 }
 
 static GStrv
-example_contact_list_dup_contact_groups (TpBaseContactList *contact_list,
+example_contact_list_dup_contact_groups (TpContactGroupList *group_list,
     TpHandle contact)
 {
-  ExampleContactList *self = EXAMPLE_CONTACT_LIST (contact_list);
+  ExampleContactList *self = EXAMPLE_CONTACT_LIST (group_list);
   GPtrArray *tags = g_ptr_array_sized_new (
       g_hash_table_size (self->priv->all_tags) + 1);
   ExampleContactDetails *d = lookup_contact (self, contact);
diff --git a/telepathy-glib/base-contact-list.c b/telepathy-glib/base-contact-list.c
index 2c44e4f..c9714c2 100644
--- a/telepathy-glib/base-contact-list.c
+++ b/telepathy-glib/base-contact-list.c
@@ -824,7 +824,7 @@ tp_blockable_contact_list_default_init (TpBlockableContactListInterface *iface)
 static void
 tp_contact_group_list_default_init (TpContactGroupListInterface *iface)
 {
-  iface->has_disjoint_groups = tp_base_contact_list_false_func;
+  iface->has_disjoint_groups = tp_contact_group_list_false_func;
   /* there's no default for the other virtual methods */
 }
 
@@ -3079,6 +3079,34 @@ tp_base_contact_list_one_contact_groups_changed (TpBaseContactList *self,
 }
 
 /**
+ * TpContactGroupListBooleanFunc:
+ * @self: a contact list manager implementing TpContactGroupListInterface
+ *
+ * Signature of a virtual method that returns a boolean result.
+ *
+ * Returns: a boolean result
+ *
+ * Since: UNRELEASED
+ */
+
+/**
+ * tp_contact_group_list_false_func:
+ * @self: ignored
+ *
+ * An implementation of #TpContactGroupListBooleanFunc that returns %FALSE,
+ * for use in simple cases.
+ *
+ * Returns: %FALSE
+ *
+ * Since: UNRELEASED
+ */
+gboolean
+tp_contact_group_list_false_func (TpContactGroupList *self G_GNUC_UNUSED)
+{
+  return FALSE;
+}
+
+/**
  * tp_base_contact_list_has_disjoint_groups:
  * @self: a contact list manager
  *
@@ -3118,11 +3146,11 @@ tp_base_contact_list_has_disjoint_groups (TpBaseContactList *self)
   g_return_val_if_fail (iface != NULL, FALSE);
   g_return_val_if_fail (iface->has_disjoint_groups != NULL, FALSE);
 
-  return iface->has_disjoint_groups (self);
+  return iface->has_disjoint_groups (TP_CONTACT_GROUP_LIST (self));
 }
 
 /**
- * TpBaseContactListDupGroupsFunc:
+ * TpContactGroupListDupGroupsFunc:
  * @self: a contact list manager
  *
  * Signature of a virtual method that lists every group that exists on a
@@ -3163,11 +3191,11 @@ tp_base_contact_list_dup_groups (TpBaseContactList *self)
   g_return_val_if_fail (tp_base_contact_list_get_state (self, NULL) ==
       TP_CONTACT_LIST_STATE_SUCCESS, NULL);
 
-  return iface->dup_groups (self);
+  return iface->dup_groups (TP_CONTACT_GROUP_LIST (self));
 }
 
 /**
- * TpBaseContactListDupContactGroupsFunc:
+ * TpContactGroupListDupContactGroupsFunc:
  * @self: a contact list manager
  * @contact: a non-zero contact handle
  *
@@ -3217,11 +3245,11 @@ tp_base_contact_list_dup_contact_groups (TpBaseContactList *self,
   g_return_val_if_fail (tp_base_contact_list_get_state (self, NULL) ==
       TP_CONTACT_LIST_STATE_SUCCESS, NULL);
 
-  return iface->dup_contact_groups (self, contact);
+  return iface->dup_contact_groups (TP_CONTACT_GROUP_LIST (self), contact);
 }
 
 /**
- * TpBaseContactListDupGroupMembersFunc:
+ * TpContactGroupListDupGroupMembersFunc:
  * @self: a contact list manager
  * @group: a normalized group name
  *
@@ -3265,7 +3293,7 @@ tp_base_contact_list_dup_group_members (TpBaseContactList *self,
   g_return_val_if_fail (tp_base_contact_list_get_state (self, NULL) ==
       TP_CONTACT_LIST_STATE_SUCCESS, NULL);
 
-  return iface->dup_group_members (self, group);
+  return iface->dup_group_members (TP_CONTACT_GROUP_LIST (self), group);
 }
 
 /**
diff --git a/telepathy-glib/base-contact-list.h b/telepathy-glib/base-contact-list.h
index 5afe0d1..6fa660f 100644
--- a/telepathy-glib/base-contact-list.h
+++ b/telepathy-glib/base-contact-list.h
@@ -396,22 +396,28 @@ void tp_base_contact_list_one_contact_groups_changed (TpBaseContactList *self,
 
 /* ---- Implemented by subclasses for ContactGroups ---- */
 
+typedef gboolean (*TpContactGroupListBooleanFunc) (
+    TpContactGroupList *self);
+
+gboolean tp_contact_group_list_false_func (
+    TpContactGroupList *self G_GNUC_UNUSED);
+
 gboolean tp_base_contact_list_has_disjoint_groups (TpBaseContactList *self);
 
-typedef GStrv (*TpBaseContactListDupGroupsFunc) (
-    TpBaseContactList *self);
+typedef GStrv (*TpContactGroupListDupGroupsFunc) (
+    TpContactGroupList *self);
 
 GStrv tp_base_contact_list_dup_groups (TpBaseContactList *self);
 
-typedef GStrv (*TpBaseContactListDupContactGroupsFunc) (
-    TpBaseContactList *self,
+typedef GStrv (*TpContactGroupListDupContactGroupsFunc) (
+    TpContactGroupList *self,
     TpHandle contact);
 
 GStrv tp_base_contact_list_dup_contact_groups (TpBaseContactList *self,
     TpHandle contact);
 
-typedef TpHandleSet *(*TpBaseContactListDupGroupMembersFunc) (
-    TpBaseContactList *self,
+typedef TpHandleSet *(*TpContactGroupListDupGroupMembersFunc) (
+    TpContactGroupList *self,
     const gchar *group);
 
 TpHandleSet *tp_base_contact_list_dup_group_members (TpBaseContactList *self,
@@ -447,11 +453,11 @@ typedef struct _TpContactGroupListInterface
 struct _TpContactGroupListInterface {
     GTypeInterface parent;
     /* mandatory to implement */
-    TpBaseContactListDupGroupsFunc dup_groups;
-    TpBaseContactListDupGroupMembersFunc dup_group_members;
-    TpBaseContactListDupContactGroupsFunc dup_contact_groups;
+    TpContactGroupListDupGroupsFunc dup_groups;
+    TpContactGroupListDupGroupMembersFunc dup_group_members;
+    TpContactGroupListDupContactGroupsFunc dup_contact_groups;
     /* optional to implement */
-    TpBaseContactListBooleanFunc has_disjoint_groups;
+    TpContactGroupListBooleanFunc has_disjoint_groups;
     TpBaseContactListNormalizeFunc normalize_group;
 };
 
diff --git a/tests/lib/contact-list-manager.c b/tests/lib/contact-list-manager.c
index d51bf42..dd0c30a 100644
--- a/tests/lib/contact-list-manager.c
+++ b/tests/lib/contact-list-manager.c
@@ -189,7 +189,7 @@ contact_list_dup_states (TpBaseContactList *base,
 }
 
 static GStrv
-contact_list_dup_groups (TpBaseContactList *base)
+contact_list_dup_groups (TpContactGroupList *base)
 {
   TpTestsContactListManager *self = TP_TESTS_CONTACT_LIST_MANAGER (base);
   GPtrArray *ret;
@@ -218,10 +218,10 @@ contact_list_dup_groups (TpBaseContactList *base)
 }
 
 static GStrv
-contact_list_dup_contact_groups (TpBaseContactList *base,
+contact_list_dup_contact_groups (TpContactGroupList *group_list,
     TpHandle contact)
 {
-  TpTestsContactListManager *self = TP_TESTS_CONTACT_LIST_MANAGER (base);
+  TpTestsContactListManager *self = TP_TESTS_CONTACT_LIST_MANAGER (group_list);
   ContactDetails *d = lookup_contact (self, contact);
   GPtrArray *ret;
 
@@ -249,7 +249,7 @@ contact_list_dup_contact_groups (TpBaseContactList *base,
 }
 
 static TpHandleSet *
-contact_list_dup_group_members (TpBaseContactList *base,
+contact_list_dup_group_members (TpContactGroupList *base,
     const gchar *group)
 {
   TpTestsContactListManager *self = TP_TESTS_CONTACT_LIST_MANAGER (base);



More information about the telepathy-commits mailing list