[glibmm] VariantContainerBase: Add create_maybe().



commit 16c801c3b803c0963e57af58e13a3073e1537916
Author: Josà Alburquerque <jaalburqu svn gnome org>
Date:   Wed Oct 12 08:25:24 2011 -0400

    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.

 ChangeLog            |    9 +++++++++
 glib/src/variant.ccg |   16 ++++++++++++++++
 glib/src/variant.hg  |    4 ++++
 3 files changed, 29 insertions(+), 0 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 6c147f7..1d1726b 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 c54b678..c002c14 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 cfd187d..87143bd 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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]