// // Copyright (c) 2009 Sebastian Dröge // // This class implements some helper functions to handle GError // using System; using System.Runtime.InteropServices; namespace Gst { [StructLayout (LayoutKind.Sequential) ] internal struct GError { uint domain_quark; int code; IntPtr message; public uint Domain { get { return domain_quark; } set { domain_quark = value; } } public int Code { get { return code; } set { code = value; } } public string Message { get { if (message == IntPtr.Zero) return null; return GLib.Marshaller.Utf8PtrToString (message); } set { if (message != IntPtr.Zero) GLib.Marshaller.Free (message); message = GLib.Marshaller.StringToPtrGStrdup (value); } } public void Unset () { GLib.Marshaller.Free (message); message = IntPtr.Zero; code = 0; domain_quark = 0; } [DllImport ("glib-2.0.dll") ] static extern void g_error_free (IntPtr error); } }