From 9611a6352feee533ce8b1d960b9d74bfd6826cd2 Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Mon, 23 Apr 2007 16:17:12 +0000 Subject: [PATCH] 2007-04-23 Mike Kestner * glib/Value.cs : add support for accessing generic struct boxed types as objects. [Fixes #79224] svn path=/trunk/gtk-sharp/; revision=76125 --- ChangeLog | 5 +++++ glib/Value.cs | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/ChangeLog b/ChangeLog index 4c66a5c24..ba68a577d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-04-23 Mike Kestner + + * glib/Value.cs : add support for accessing generic struct boxed types + as objects. [Fixes #79224] + 2007-04-20 Mike Kestner * generator/CallbackGen.cs : switch to NativeCallbackSignature. diff --git a/glib/Value.cs b/glib/Value.cs index e6791a703..026999487 100755 --- a/glib/Value.cs +++ b/glib/Value.cs @@ -303,6 +303,15 @@ namespace GLib { return strings; } + object ToBoxed () + { + IntPtr boxed_ptr = g_value_get_boxed (ref this); + Type t = GType.LookupType (type); + if (t == null) + throw new Exception ("Unknown type " + new GType (type).ToString ()); + return Marshal.PtrToStructure (boxed_ptr, t); + } + public object Val { get { @@ -331,6 +340,8 @@ namespace GLib { return ManagedValue.ObjectForWrapper (g_value_get_boxed (ref this)); else if (g_type_is_a (type, GType.Object.Val)) return (GLib.Object) this; + else if (g_type_is_a (type, GType.Boxed.Val)) + return ToBoxed (); else throw new Exception ("Unknown type " + new GType (type).ToString ()); }