* roottypes.cs: Rename from tree.cs.
[mono.git] / mono / tests / marshal5.cs
1 using System;
2 using System.Runtime.InteropServices;
3
4 public class Test 
5 {
6         [DllImport ("libtest", EntryPoint="mono_test_byvalstr_gen")]
7         public static extern IntPtr mono_test_byvalstr_gen();
8
9         [DllImport ("libtest", EntryPoint="mono_test_byvalstr_check")]
10         public static extern int mono_test_byvalstr_check(IntPtr data, string correctString);
11         
12         [StructLayout (LayoutKind.Sequential)]
13         public struct ByValStrStruct 
14         {
15                 [MarshalAs(UnmanagedType.ByValTStr, SizeConst=100)]
16                 public string a;
17         }
18         
19         public unsafe static int Main () 
20         {
21                 string testString = "A small string";
22
23                 IntPtr udata = mono_test_byvalstr_gen();
24
25                 ByValStrStruct data = new ByValStrStruct();
26                 data.a = testString;
27
28                 Marshal.StructureToPtr(data, udata, false);
29
30                 return mono_test_byvalstr_check(udata, testString);
31         }
32 }
33