// GLib.GValue.cs - GLib Value class implementation // // Author: Mike Kestner // // (c) 2001 Mike Kestner namespace GLib { using System; using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential)] public struct GValueStruct { uint type; IntPtr data1; IntPtr data2; IntPtr data3; IntPtr data4; } public class GValue { GValueStruct _val; /// /// GValue Constructor /// /// /// /// Constructs a GValue from a string. /// [DllImport("gobject-1.3")] static extern void g_value_set_string (ref GValueStruct val, String data); public GValue (String data) { g_value_set_string (ref _val, data); } /// /// GetString Method /// /// /// /// Extracts a string from a GValue. Note, this method /// will produce an exception if the GValue does not hold a /// string value. /// [DllImport("gobject-1.3")] static extern String g_value_get_string (ref GValueStruct val); public String GetString () { // FIXME: Insert an appropriate exception here if // _val.type indicates an error. return g_value_get_string (ref _val); } /// /// ValueStruct Property /// /// /// /// Accesses a structure which can be easily marshalled /// via PInvoke to set properties on GObjects. /// public GValueStruct ValueStruct { get { return _val; } } } }