2 // Mono runtime native structs surfaced to managed code.
5 // Aleksey Kliger <aleksey@xamarin.com>
6 // Rodrigo Kumpera <kumpera@xamarin.com>
8 // Copyright 2016 Dot net foundation.
9 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
13 using System.Runtime.InteropServices;
17 // Managed representations of mono runtime types
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 [];
32 internal struct MonoClass {
35 // class-internals.h MonoGenericParamInfo
36 internal unsafe struct GenericParamInfo {
37 internal MonoClass* pklass;
39 internal ushort flags;
41 internal MonoClass** constraints; /* NULL terminated */
45 internal unsafe struct GPtrArray {
46 internal IntPtr* data;
50 // handle.h HandleStackMark
51 struct HandleStackMark {
56 // mono-error.h MonoError
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;
65 //Maps to metadata-internals.h:: MonoAssemblyName
66 internal unsafe struct MonoAssemblyName
68 const int MONO_PUBLIC_KEY_TOKEN_LENGTH = 17;
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;
78 internal ushort major, minor, build, revision;