From 24f8cede1935f41be2825de38619a47e7855702d Mon Sep 17 00:00:00 2001
From: Xavier Claessens <xavier.claessens@collabora.com>
Date: Thu, 15 May 2014 15:52:46 -0400
Subject: [PATCH] Variant: Add wrapper for g_variant_new_tuple()

---
 glib/Variant.cs | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/glib/Variant.cs b/glib/Variant.cs
index f12283861..4dbdf4593 100644
--- a/glib/Variant.cs
+++ b/glib/Variant.cs
@@ -131,6 +131,21 @@ namespace GLib {
 			Marshaller.Free (native);
 		}
 
+		[DllImport (Global.GLibNativeDll, CallingConvention = CallingConvention.Cdecl)]
+		static extern IntPtr g_variant_new_tuple (IntPtr[] children, UIntPtr n_children);
+
+		public static Variant NewTuple (Variant[] children)
+		{
+			if (children == null)
+				return new Variant (g_variant_new_tuple (null, new UIntPtr (0ul)));
+
+			IntPtr[] native = new IntPtr[children.Length];
+			for (int i = 0; i < children.Length; i++)
+				native[i] = children[i].Handle;
+
+			return new Variant (g_variant_new_tuple (native, new UIntPtr ((ulong) children.Length)));
+		}
+
 		[DllImport (Global.GLibNativeDll, CallingConvention = CallingConvention.Cdecl)]
 		static extern bool g_variant_get_boolean (IntPtr handle);