2 using System.Runtime.InteropServices;
3 using System.Reflection.Emit;
7 namespace DBus.DBusType
12 public class Int64 : IDBusType
14 public const char Code = 'x';
15 private System.Int64 val;
21 public Int64(System.Int64 val, Service service)
26 public Int64(IntPtr iter, Service service)
28 this.val = dbus_message_iter_get_int64(iter);
31 public void Append(IntPtr iter)
33 if (!dbus_message_iter_append_int64(iter, val))
34 throw new ApplicationException("Failed to append INT64 argument:" + val);
37 public static bool Suits(System.Type type)
39 switch (type.ToString()) {
48 public static void EmitMarshalIn(ILGenerator generator, Type type)
51 generator.Emit(OpCodes.Ldind_I8);
55 public static void EmitMarshalOut(ILGenerator generator, Type type, bool isReturn)
57 generator.Emit(OpCodes.Unbox, type);
58 generator.Emit(OpCodes.Ldind_I8);
60 generator.Emit(OpCodes.Stind_I8);
69 public object Get(System.Type type)
71 switch (type.ToString()) {
76 throw new ArgumentException("Cannot cast DBus.Type.Int64 to type '" + type.ToString() + "'");
81 private extern static System.Int64 dbus_message_iter_get_int64(IntPtr iter);
84 private extern static bool dbus_message_iter_append_int64(IntPtr iter, System.Int64 value);