summaryrefslogtreecommitdiff
path: root/telepathy-glib/dbus.c
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-04-19 11:45:43 +0200
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-05-09 12:14:10 +0200
commit55cb32b5bd54e8f2ca59f62c13b7ab9514ae10bd (patch)
tree5ad30bf813f65c576d2974dfd2592a1cbf83205c /telepathy-glib/dbus.c
parent268c5a5e7d4de7bde8dd41cf6330d082176eb7ce (diff)
downloadtelepathy-glib-55cb32b5bd54e8f2ca59f62c13b7ab9514ae10bd.tar.gz
add _tp_asv_from_vardict()
Diffstat (limited to 'telepathy-glib/dbus.c')
-rw-r--r--telepathy-glib/dbus.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/telepathy-glib/dbus.c b/telepathy-glib/dbus.c
index 4ef2fcf5d..aaffce260 100644
--- a/telepathy-glib/dbus.c
+++ b/telepathy-glib/dbus.c
@@ -1984,3 +1984,29 @@ _tp_boxed_to_variant (GType gtype,
return g_variant_ref_sink (ret);
}
+
+/*
+ * _tp_asv_from_vardict:
+ * @variant: a #GVariant of type %G_VARIANT_TYPE_VARDICT
+ *
+ * Returns: (transfer full): a newly created #GHashTable of
+ * type #TP_HASH_TYPE_STRING_VARIANT_MAP
+ */
+GHashTable *
+_tp_asv_from_vardict (GVariant *variant)
+{
+ GValue v = G_VALUE_INIT;
+ GHashTable *result;
+
+ g_return_val_if_fail (variant != NULL, NULL);
+ g_return_val_if_fail (g_variant_is_of_type (variant, G_VARIANT_TYPE_VARDICT),
+ NULL);
+
+ dbus_g_value_parse_g_variant (variant, &v);
+ g_assert (G_VALUE_HOLDS (&v, TP_HASH_TYPE_STRING_VARIANT_MAP));
+
+ result = g_value_dup_boxed (&v);
+
+ g_value_unset (&v);
+ return result;
+}