2009-05-13 Sebastian Dröge <sebastian.droege@collabora.co.uk>

* glib/Value.cs: Add support for ValueArrays inside GLib.Values.
	* glib/ValueArray.cs: Add GType property to get the ValueArray GType.
	[Fixes #503048]

svn path=/trunk/gtk-sharp/; revision=134073
This commit is contained in:
Mike Kestner 2009-05-13 18:57:31 +00:00
parent bccd244a70
commit a979e2211b
3 changed files with 29 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2009-05-13 Sebastian Dröge <sebastian.droege@collabora.co.uk>
* glib/Value.cs: Add support for ValueArrays inside GLib.Values.
* glib/ValueArray.cs: Add GType property to get the ValueArray GType.
[Fixes #503048]
2009-05-12 Mike Kestner <mkestner@novell.com>
* glib/Value.cs: explicit exception for unknown props.

View File

@ -138,6 +138,11 @@ namespace GLib {
GLib.Marshaller.Free (native_val);
}
public Value (ValueArray val) : this (ValueArray.GType)
{
g_value_set_boxed (ref this, val.Handle);
}
public Value (IntPtr val) : this (GType.Pointer)
{
g_value_set_pointer (ref this, val);
@ -297,6 +302,11 @@ namespace GLib {
return str == IntPtr.Zero ? null : GLib.Marshaller.Utf8PtrToString (str);
}
public static explicit operator ValueArray (Value val)
{
return new ValueArray (g_value_get_boxed (ref val));
}
public static explicit operator IntPtr (Value val)
{
return g_value_get_pointer (ref val);
@ -429,6 +439,8 @@ namespace GLib {
return (IntPtr) this;
else if (type == GType.Param.Val)
return g_value_get_param (ref this);
else if (type == ValueArray.GType.Val)
return new ValueArray (g_value_get_boxed (ref this));
else if (type == ManagedValue.GType.Val)
return ManagedValue.ObjectForWrapper (g_value_get_boxed (ref this));
else if (GType.Is (type, GType.Object))
@ -482,6 +494,8 @@ namespace GLib {
g_value_set_pointer (ref this, buf);
} else if (type == GType.Param.Val) {
g_value_set_param (ref this, (IntPtr) value);
} else if (type == ValueArray.GType.Val) {
g_value_set_boxed (ref this, ((ValueArray) value).Handle);
} else if (type == ManagedValue.GType.Val) {
IntPtr wrapper = ManagedValue.WrapObject (value);
g_value_set_boxed (ref this, wrapper);

View File

@ -235,5 +235,14 @@ namespace GLib {
{
return new ValueArray (g_value_array_copy (Handle));
}
[DllImport ("libgobject-2.0-0.dll")]
static extern IntPtr g_value_array_get_type ();
public static GLib.GType GType {
get {
return new GLib.GType (g_value_array_get_type ());
}
}
}
}