2 using System.Runtime.InteropServices;
4 [StructLayout(LayoutKind.Sequential)]
10 [StructLayout(LayoutKind.Explicit)]
13 [FieldOffset(0)] public int i1;
14 [FieldOffset(0)] public int i2;
17 [StructLayout(LayoutKind.Sequential)]
25 /* various small structs for testing struct-by-value where they are handled specially
28 [StructLayout(LayoutKind.Sequential)]
34 [StructLayout(LayoutKind.Sequential)]
42 [StructLayout(LayoutKind.Sequential)]
54 [DllImport ("libtest")]
55 public static extern int mono_union_test_1 (cs a);
57 [DllImport ("libtest")]
58 public static extern int mono_return_int (int a);
60 [DllImport ("libtest", EntryPoint="mono_return_int_ss")]
61 public static extern int mono_return_int_ss (ss a);
63 [DllImport ("libtest", EntryPoint="mono_return_ss")]
64 public static extern ss mono_return_ss (ss a);
66 [DllImport ("libtest", EntryPoint="mono_return_sc1")]
67 public static extern sc1 mono_return_sc1 (sc1 a);
69 [DllImport ("libtest", EntryPoint="mono_return_sc3")]
70 public static extern sc3 mono_return_sc3 (sc3 a);
72 [DllImport ("libtest", EntryPoint="mono_return_sc5")]
73 public static extern sc5 mono_return_sc5 (sc5 a);
75 [DllImport ("libtest", EntryPoint="mono_return_int_su")]
76 public static extern int mono_return_int_su (su a);
80 if (mono_return_int (5) != 5)
85 if (mono_return_int_ss (s1) != 4)
88 s1 = mono_return_ss (s1);
95 if (mono_return_int_su (s2) != 3)
99 if (mono_return_int_su (s2) != 2)
109 if (mono_union_test_1 (s3) != 13)
113 if (mono_union_test_1 (s3) != 14)
117 if (mono_union_test_1 (s3) != 15)
122 s4 = mono_return_sc1(s4);
130 s5 = mono_return_sc3(s5);
131 if (s5.c0 != 5 || s5.c1 != 7 || s5.c2 != 9)
140 s6 = mono_return_sc5(s6);
141 if (s6.c0 != 5 || s6.c1 != 7 || s6.c2 != 9 || s6.c3 != 11 || s6.c4 != 13)