Merge pull request #3213 from henricm/fix-for-win-securestring-to-bstr
[mono.git] / mcs / class / corlib / Mono / RuntimeStructs.cs
1 //
2 // Mono runtime native structs surfaced to managed code.
3 //
4 // Authors:
5 //   Aleksey Kliger <aleksey@xamarin.com>
6 //   Rodrigo Kumpera <kumpera@xamarin.com>
7 //
8 // Copyright 2016 Dot net foundation.
9 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
10 //
11
12 using System;
13 using System.Runtime.InteropServices;
14
15 namespace Mono {
16         //
17         // Managed representations of mono runtime types
18         //
19         internal static class RuntimeStructs {
20                 // class-internals.h MonoRemoteClass
21                 [StructLayout(LayoutKind.Sequential)]
22                 internal unsafe struct RemoteClass {
23                         internal IntPtr default_vtable;
24                         internal IntPtr xdomain_vtable;
25                         internal MonoClass* proxy_class;
26                         internal IntPtr proxy_class_name;
27                         internal uint interface_count;
28                         // FIXME: How to represent variable-length array struct member?
29                         // MonoClass* interfaces [];
30                 }
31
32                 internal struct MonoClass {
33                 }
34
35                 // class-internals.h MonoGenericParamInfo
36                 internal unsafe struct GenericParamInfo {
37                         internal MonoClass* pklass;
38                         internal IntPtr name;
39                         internal ushort flags;
40                         internal uint token;
41                         internal MonoClass** constraints; /* NULL terminated */
42                 }
43
44                 // glib.h GPtrArray
45                 internal unsafe struct GPtrArray {
46                         internal IntPtr* data;
47                         internal int len;
48                 }
49
50                 // handle.h HandleStackMark
51                 struct HandleStackMark {
52                         int size;
53                         IntPtr chunk;
54                 }
55
56                 // mono-error.h MonoError
57                 struct MonoError {
58                         ushort error_code;
59                         ushort hidden_0;
60                         IntPtr hidden_1, hidden_2, hidden_3, hidden_4, hidden_5, hidden_6, hidden_7, hidden_8;
61                         IntPtr hidden_11, hidden_12, hidden_13, hidden_14, hidden_15, hidden_16, hidden_17, hidden_18;
62                 }
63         }
64
65         //Maps to metadata-internals.h:: MonoAssemblyName
66         internal unsafe struct MonoAssemblyName
67         {
68                 const int MONO_PUBLIC_KEY_TOKEN_LENGTH = 17;
69
70                 internal IntPtr name;
71                 internal IntPtr culture;
72                 internal IntPtr hash_value;
73                 internal IntPtr public_key;
74                 internal fixed byte public_key_token [MONO_PUBLIC_KEY_TOKEN_LENGTH];
75                 internal uint hash_alg;
76                 internal uint hash_len;
77                 internal uint flags;
78                 internal ushort major, minor, build, revision;
79                 internal ushort arch;
80         }
81 }