efl/src/bindings/mono/eina_mono/eina_error.cs

92 lines
2.0 KiB
C#

#pragma warning disable 1591
using System;
using System.Runtime.InteropServices;
namespace Eina {
public struct Error : IComparable<Error>
{
int code;
public string Message
{
get { return MsgGet(this); }
}
public static Error EFL_ERROR;
public static Error NO_ERROR = new Error(0);
public static Error EPERM = new Error(1);
public static Error ENOENT = new Error(2);
public static Error ECANCELED = new Error(125);
public Error(int value) { code = value; }
static public implicit operator Error(int val)
{
return new Error(val);
}
static public implicit operator int(Error error)
{
return error.code;
}
public int CompareTo(Error err)
{
return code.CompareTo(err.code);
}
public override string ToString()
{
return "Eina.Error(" + code + ")";
}
internal static void Init()
{
EFL_ERROR = eina_error_msg_register("Managed Code Error");
}
[DllImport(efl.Libs.Eina)] static extern Error eina_error_msg_register(string msg);
[DllImport(efl.Libs.Eina)] static extern Error eina_error_get();
[DllImport(efl.Libs.Eina)] static extern void eina_error_set(Error error);
[DllImport(efl.Libs.Eina)] static extern IntPtr eina_error_msg_get(Error error);
public static void Set(Error error)
{
eina_error_set(error);
}
public static Error Get()
{
return eina_error_get();
}
public static String MsgGet(Error error)
{
IntPtr cstr = eina_error_msg_get(error);
return Eina.StringConversion.NativeUtf8ToManagedString(cstr);
}
public static void RaiseIfOccurred()
{
Error e = Get();
Clear();
Raise(e);
}
public static void Raise(Error e)
{
if (e != 0)
throw (new Efl.EflException(MsgGet(e)));
}
public static void Clear()
{
Set(0);
}
public static Error Register(string msg)
{
return eina_error_msg_register(msg);
}
}
}