Re: Function completion for GVariant maybe types?
- From: Markus Elfring <Markus Elfring web de>
- To: Simon McVittie <simon mcvittie collabora co uk>
- Cc: gtk-devel-list gnome org
- Subject: Re: Function completion for GVariant maybe types?
- Date: Fri, 22 Feb 2013 11:55:16 +0100
g_variant_get_type() and g_variant_type_element() are enough.
I find it not obvious from the documentation that the "element" can also refer
to the "child".
http://developer.gnome.org/glib/2.35/glib-GVariantType.html#g-variant-type-element
How do you think about the following update suggestion?
diff --git a/glib/gvariant.c b/glib/gvariant.c
index c3d1947..43830d7 100644
--- a/glib/gvariant.c
+++ b/glib/gvariant.c
@@ -682,6 +682,22 @@ g_variant_new_maybe (const GVariantType *child_type,
return value;
}
+GVariant *
+g_variant_new_nothing_from_type (GVariant const * value)
+{
+ if (value == NULL)
+ return g_variant_new ("ms", NULL);
+ else
+ {
+ GVariantType* type = g_variant_get_type (value);
+
+ if (g_variant_type_is_maybe (type))
+ return g_variant_new_maybe (g_variant_type_element (type), NULL);
+ else
+ return g_variant_new_maybe (type, value);
+ }
+}
+
/**
* g_variant_get_maybe:
* @value: a maybe-typed value
diff --git a/glib/gvariant.h b/glib/gvariant.h
index 9abcc0b..50877f2 100644
--- a/glib/gvariant.h
+++ b/glib/gvariant.h
@@ -128,6 +128,7 @@ gchar **
g_variant_dup_bytestring_array (GVarian
GVariant * g_variant_new_maybe (const
GVariantType *child_type,
GVariant *child);
+GVariant * g_variant_new_nothing_from_type
(GVariant const * value);
GVariant * g_variant_new_array (const
GVariantType *child_type,
GVariant * const *children,
gsize
n_children);
I imagine that this approach might need a bit more fine-tuning to avoid
unnecessary type checks.
http://git.gnome.org/browse/glib/tree/glib/gvarianttype.c?id=7936af693477f5b8dfeef4e0d90e6fa4531cf395#n1148
Regards,
Markus
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]