summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Alburquerque <jaalburqu@svn.gnome.org>2011-10-12 08:25:24 -0400
committerJosé Alburquerque <jaalburqu@svn.gnome.org>2011-10-12 08:27:28 -0400
commit16c801c3b803c0963e57af58e13a3073e1537916 (patch)
treedd796a34c7aa6b4391d5a5cdafb21afba8df9a4d
parentbde7c569a73494cbf83a315ff028a1931de381aa (diff)
downloadglibmm-16c801c3b803c0963e57af58e13a3073e1537916.tar.gz
VariantContainerBase: Add create_maybe().
* glib/src/variant.{ccg,hg}: Add a create_maybe() method because it was discussed on the mailing list. Clearly the variant classes are not intended for general use. However, this method is added just so that the API is more complete.
-rw-r--r--ChangeLog9
-rw-r--r--glib/src/variant.ccg16
-rw-r--r--glib/src/variant.hg4
3 files changed, 29 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 6c147f75..1d1726b5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2011-10-12 José Alburquerque <jaalburqu@svn.gnome.org>
+
+ VariantContainerBase: Add create_maybe().
+
+ * glib/src/variant.{ccg,hg}: Add a create_maybe() method because it
+ was discussed on the mailing list. Clearly the variant classes are
+ not intended for general use. However, this method is added just
+ so that the API is more complete.
+
2011-10-11 José Alburquerque <jaalburqu@svn.gnome.org>
DataInputStream: Add read_line_utf8() and read_line_finish_utf8().
diff --git a/glib/src/variant.ccg b/glib/src/variant.ccg
index c54b6780..c002c14d 100644
--- a/glib/src/variant.ccg
+++ b/glib/src/variant.ccg
@@ -112,6 +112,22 @@ VariantContainerBase::create_tuple(const VariantBase& child)
return create_tuple(vec);
}
+//static
+VariantContainerBase
+VariantContainerBase::create_maybe(const VariantType& child_type,
+ const VariantBase& child)
+{
+ GVariant* g_variant = g_variant_new_maybe(child_type.gobj(),
+ const_cast<GVariant*>(child.gobj()));
+
+ VariantContainerBase result = VariantContainerBase(g_variant);
+
+ // Remove the floating reference (since it is newly created).
+ g_variant_ref_sink(result.gobj());
+
+ return result;
+}
+
void VariantContainerBase::get_child(VariantBase& child, gsize index) const
{
if(index >= g_variant_n_children(gobject_))
diff --git a/glib/src/variant.hg b/glib/src/variant.hg
index cfd187d6..87143bdf 100644
--- a/glib/src/variant.hg
+++ b/glib/src/variant.hg
@@ -283,6 +283,10 @@ public:
*/
static VariantContainerBase create_tuple(const VariantBase& child);
+ _WRAP_METHOD_DOCS_ONLY(g_variant_new_maybe)
+ static VariantContainerBase create_maybe(const VariantType& child_type,
+ const VariantBase& child = VariantBase());
+
_WRAP_METHOD(gsize get_n_children() const, g_variant_n_children)
/** Reads a child item out of this instance. This method is valid for