[telepathy-gabble/master] Add gabble_capability_set_has_one()

Simon McVittie simon.mcvittie at collabora.co.uk
Tue Sep 8 04:10:09 PDT 2009


This returns TRUE if at least one capability exists in both sets.
---
 src/capabilities.c |   23 +++++++++++++++++++++++
 src/capabilities.h |    4 ++++
 2 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/src/capabilities.c b/src/capabilities.c
index c286f25..6ff1919 100644
--- a/src/capabilities.c
+++ b/src/capabilities.c
@@ -472,6 +472,29 @@ gabble_capability_set_has (const GabbleCapabilitySet *caps,
 
 /* By design, this function can be used as a GabbleCapabilitySetPredicate */
 gboolean
+gabble_capability_set_has_one (const GabbleCapabilitySet *caps,
+    const GabbleCapabilitySet *alternatives)
+{
+  TpIntSetIter iter;
+
+  g_return_val_if_fail (caps != NULL, FALSE);
+  g_return_val_if_fail (alternatives != NULL, FALSE);
+
+  tp_intset_iter_init (&iter, tp_handle_set_peek (alternatives->handles));
+
+  while (tp_intset_iter_next (&iter))
+    {
+      if (tp_handle_set_is_member (caps->handles, iter.element))
+        {
+          return TRUE;
+        }
+    }
+
+  return FALSE;
+}
+
+/* By design, this function can be used as a GabbleCapabilitySetPredicate */
+gboolean
 gabble_capability_set_at_least (const GabbleCapabilitySet *caps,
     const GabbleCapabilitySet *query)
 {
diff --git a/src/capabilities.h b/src/capabilities.h
index 0909625..6842341 100644
--- a/src/capabilities.h
+++ b/src/capabilities.h
@@ -67,6 +67,8 @@ void gabble_capability_set_add (GabbleCapabilitySet *caps,
     const gchar *cap);
 gboolean gabble_capability_set_has (const GabbleCapabilitySet *caps,
     const gchar *cap);
+gboolean gabble_capability_set_has_one (const GabbleCapabilitySet *caps,
+    const GabbleCapabilitySet *alternatives);
 gboolean gabble_capability_set_at_least (const GabbleCapabilitySet *caps,
     const GabbleCapabilitySet *query);
 gboolean gabble_capability_set_equals (const GabbleCapabilitySet *a,
@@ -83,6 +85,8 @@ typedef gboolean (*GabbleCapabilitySetPredicate) (
  * pass in the desired capabilities as the user_data */
 #define gabble_capability_set_predicate_has \
   ((GabbleCapabilitySetPredicate) gabble_capability_set_has)
+#define gabble_capability_set_predicate_has_one \
+  ((GabbleCapabilitySetPredicate) gabble_capability_set_has_one)
 #define gabble_capability_set_predicate_at_least \
   ((GabbleCapabilitySetPredicate) gabble_capability_set_at_least)
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list