[telepathy-gabble/master] Add gabble_capability_set_remove, gabble_capability_set_exclude
Simon McVittie
simon.mcvittie at collabora.co.uk
Mon Aug 24 08:48:22 PDT 2009
---
src/capabilities.c | 41 +++++++++++++++++++++++++++++++++++++++++
src/capabilities.h | 4 ++++
2 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/src/capabilities.c b/src/capabilities.c
index 8583abb..a4bd6fd 100644
--- a/src/capabilities.c
+++ b/src/capabilities.c
@@ -439,6 +439,30 @@ gabble_capability_set_update (GabbleCapabilitySet *target,
tp_handle_set_update (target->handles, tp_handle_set_peek (source->handles));
}
+static void
+remove_from_set (TpHandleSet *unused G_GNUC_UNUSED,
+ TpHandle handle,
+ gpointer handles)
+{
+ tp_handle_set_remove (handles, handle);
+}
+
+void
+gabble_capability_set_exclude (GabbleCapabilitySet *caps,
+ const GabbleCapabilitySet *removed)
+{
+ g_return_if_fail (caps != NULL);
+ g_return_if_fail (removed != NULL);
+
+ if (caps == removed)
+ {
+ gabble_capability_set_clear (caps);
+ return;
+ }
+
+ tp_handle_set_foreach (removed->handles, remove_from_set, caps->handles);
+}
+
void
gabble_capability_set_add (GabbleCapabilitySet *caps,
const gchar *cap)
@@ -454,6 +478,23 @@ gabble_capability_set_add (GabbleCapabilitySet *caps,
tp_handle_unref (feature_handles, handle);
}
+gboolean
+gabble_capability_set_remove (GabbleCapabilitySet *caps,
+ const gchar *cap)
+{
+ TpHandle handle;
+
+ g_return_val_if_fail (caps != NULL, FALSE);
+ g_return_val_if_fail (cap != NULL, FALSE);
+
+ handle = tp_handle_lookup (feature_handles, cap, NULL, NULL);
+
+ if (handle == 0)
+ return FALSE;
+
+ return tp_handle_set_remove (caps->handles, handle);
+}
+
void
gabble_capability_set_clear (GabbleCapabilitySet *caps)
{
diff --git a/src/capabilities.h b/src/capabilities.h
index 344fc35..2f11e88 100644
--- a/src/capabilities.h
+++ b/src/capabilities.h
@@ -65,6 +65,10 @@ void gabble_capability_set_update (GabbleCapabilitySet *target,
const GabbleCapabilitySet *source);
void gabble_capability_set_add (GabbleCapabilitySet *caps,
const gchar *cap);
+gboolean gabble_capability_set_remove (GabbleCapabilitySet *caps,
+ const gchar *cap);
+void gabble_capability_set_exclude (GabbleCapabilitySet *caps,
+ const GabbleCapabilitySet *removed);
gboolean gabble_capability_set_has (const GabbleCapabilitySet *caps,
const gchar *cap);
gboolean gabble_capability_set_has_one (const GabbleCapabilitySet *caps,
--
1.5.6.5
More information about the telepathy-commits
mailing list