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)