3 // System.Reflection.Emit/UnmanagedMarshal.cs
6 // Paolo Molaro (lupus@ximian.com)
8 // (C) 2001-2002 Ximian, Inc. http://www.ximian.com
11 using System.Reflection.Emit;
12 using System.Runtime.InteropServices;
15 namespace System.Reflection.Emit {
18 public sealed class UnmanagedMarshal {
20 private UnmanagedType t;
21 private UnmanagedType tbase;
23 private UnmanagedMarshal (UnmanagedType maint, int cnt) {
28 private UnmanagedMarshal (UnmanagedType maint, UnmanagedType elemt) {
34 public UnmanagedType BaseType {
36 if (t == UnmanagedType.LPArray || t == UnmanagedType.SafeArray)
37 throw new ArgumentException ();
42 public int ElementCount {
46 public UnmanagedType GetUnmanagedType {
51 get {return Guid.Empty;}
54 public static UnmanagedMarshal DefineByValArray( int elemCount) {
55 return new UnmanagedMarshal (UnmanagedType.ByValArray, elemCount);
58 public static UnmanagedMarshal DefineByValTStr( int elemCount) {
59 return new UnmanagedMarshal (UnmanagedType.ByValTStr, elemCount);
62 public static UnmanagedMarshal DefineLPArray( UnmanagedType elemType) {
63 return new UnmanagedMarshal (UnmanagedType.LPArray, elemType);
66 public static UnmanagedMarshal DefineSafeArray( UnmanagedType elemType) {
67 return new UnmanagedMarshal (UnmanagedType.SafeArray, elemType);
70 public static UnmanagedMarshal DefineUnmanagedMarshal( UnmanagedType unmanagedType) {
71 return new UnmanagedMarshal (unmanagedType, unmanagedType);