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 ()); }