[next] telepathy-glib: add tp_vardict_has_key()

Guillaume Desmottes gdesmott at kemper.freedesktop.org
Tue Mar 18 06:43:50 PDT 2014


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

Author: Guillaume Desmottes <guillaume.desmottes at collabora.co.uk>
Date:   Tue Mar 18 14:39:42 2014 +0100

add tp_vardict_has_key()

---

 .../telepathy-glib/telepathy-glib-sections.txt     |    1 +
 telepathy-glib/variant-util.c                      |   24 ++++++++++++++++++++
 telepathy-glib/variant-util.h                      |    3 +++
 tests/asv.c                                        |    4 ++++
 4 files changed, 32 insertions(+)

diff --git a/docs/reference/telepathy-glib/telepathy-glib-sections.txt b/docs/reference/telepathy-glib/telepathy-glib-sections.txt
index 68a9d11..2522357 100644
--- a/docs/reference/telepathy-glib/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib/telepathy-glib-sections.txt
@@ -1896,6 +1896,7 @@ tp_variant_convert
 <INCLUDE>telepathy-glib/telepathy-glib.h</INCLUDE>
 tp_asv_from_vardict
 tp_asv_to_vardict
+tp_vardict_has_key
 tp_vardict_get_boolean
 tp_vardict_get_double
 tp_vardict_get_int32
diff --git a/telepathy-glib/variant-util.c b/telepathy-glib/variant-util.c
index 0541fbe..09756c0 100644
--- a/telepathy-glib/variant-util.c
+++ b/telepathy-glib/variant-util.c
@@ -617,3 +617,27 @@ IMPLEMENT (uint32)
 IMPLEMENT (uint64)
 
 #undef IMPLEMENT
+
+/**
+ * tp_vardict_has_key:
+ * @variant: a #GVariant of type %G_VARIANT_TYPE_VARDICT
+ * @key: The key to look up
+ *
+ * Check if @variant contains @key.
+ *
+ * Returns: %TRUE, if @variant contains @key, %FALSE otherwise
+ * Since: UNRELEASED
+ */
+gboolean
+tp_vardict_has_key (GVariant *variant,
+    const gchar *key)
+{
+  GVariant *v;
+
+  v = g_variant_lookup_value (variant, key, NULL);
+  if (v == NULL)
+    return FALSE;
+
+  g_variant_unref (v);
+  return TRUE;
+}
diff --git a/telepathy-glib/variant-util.h b/telepathy-glib/variant-util.h
index 2a9b517..e3181d4 100644
--- a/telepathy-glib/variant-util.h
+++ b/telepathy-glib/variant-util.h
@@ -39,6 +39,9 @@ GVariant * tp_asv_to_vardict (const GHashTable *asv);
 
 GHashTable * tp_asv_from_vardict (GVariant *variant);
 
+gboolean tp_vardict_has_key (GVariant *variant,
+    const gchar *key);
+
 const gchar *tp_vardict_get_string (GVariant *variant,
     const gchar *key);
 const gchar *tp_vardict_get_object_path (GVariant *variant,
diff --git a/tests/asv.c b/tests/asv.c
index 0275a21..4e90bd0 100644
--- a/tests/asv.c
+++ b/tests/asv.c
@@ -114,6 +114,10 @@ int main (int argc, char **argv)
   tp_asv_dump (hash);
 
   vardict = tp_asv_to_vardict (hash);
+
+  g_assert (tp_vardict_has_key (vardict, "s"));
+  g_assert (!tp_vardict_has_key (vardict, "badger"));
+
   g_variant_ref_sink (vardict);
 
   /* Tests: tp_asv_get_boolean */



More information about the telepathy-commits mailing list