Pass the --clr-memory-model flag on the command line instead of MONO_DEBUG so its...
[mono-project.git] / mono / metadata / tabledefs.h
blob6cfc4c8ffe75676e046c50332d25a904dbed39e6
1 /**
2 * \file
3 * This file contains the various definitions for constants
4 * found on the metadata tables
6 * Author:
7 * Miguel de Icaza (miguel@ximian.com)
9 * (C) 2001 Ximian, Inc.
11 * From the ECMA documentation
14 #ifndef _MONO_METADATA_TABLEDEFS_H_
15 #define _MONO_METADATA_TABLEDEFS_H_
18 * 22.1.1 Values for AssemblyHashAlgorithm
21 enum {
22 ASSEMBLY_HASH_NONE,
23 ASSEMBLY_HASH_MD5 = 0x8003,
24 ASSEMBLY_HASH_SHA1 = 0x8004
28 * 22.1.4 Flags for Event.EventAttributes
31 enum {
32 EVENT_SPECIALNAME = 0x0200,
33 EVENT_RTSPECIALNAME = 0x0400
37 * 22.1.6 Flags for FileAttributes
40 enum {
41 FILE_CONTAINS_METADATA = 0,
42 FILE_CONTAINS_NO_METADATA = 1
45 /* keep in synch with System.Security.Permissions.SecurityAction enum
46 (except for the special non-CAS cases) */
47 enum {
48 SECURITY_ACTION_DEMAND = 2,
49 SECURITY_ACTION_ASSERT = 3,
50 SECURITY_ACTION_DENY = 4,
51 SECURITY_ACTION_PERMITONLY = 5,
52 SECURITY_ACTION_LINKDEMAND = 6,
53 SECURITY_ACTION_INHERITDEMAND = 7,
54 SECURITY_ACTION_REQMIN = 8,
55 SECURITY_ACTION_REQOPT = 9,
56 SECURITY_ACTION_REQREFUSE = 10,
57 /* Special cases (non CAS permissions) */
58 SECURITY_ACTION_NONCASDEMAND = 13,
59 SECURITY_ACTION_NONCASLINKDEMAND = 14,
60 SECURITY_ACTION_NONCASINHERITANCE = 15,
61 /* Fx 2.0 actions (for both CAS and non-CAS permissions) */
62 SECURITY_ACTION_LINKDEMANDCHOICE = 16,
63 SECURITY_ACTION_INHERITDEMANDCHOICE = 17,
64 SECURITY_ACTION_DEMANDCHOICE = 18
69 * 22.1.8 Flags for ManifestResource
71 #define MANIFEST_RESOURCE_VISIBILITY_MASK 0x00000007
72 #define MANIFEST_RESOURCE_PUBLIC 0x00000001
73 #define MANIFEST_RESOURCE_PRIVATE 0x00000002
76 * Field Attributes (21.1.5).
79 #define FIELD_ATTRIBUTE_FIELD_ACCESS_MASK 0x0007
80 #define FIELD_ATTRIBUTE_COMPILER_CONTROLLED 0x0000
81 #define FIELD_ATTRIBUTE_PRIVATE 0x0001
82 #define FIELD_ATTRIBUTE_FAM_AND_ASSEM 0x0002
83 #define FIELD_ATTRIBUTE_ASSEMBLY 0x0003
84 #define FIELD_ATTRIBUTE_FAMILY 0x0004
85 #define FIELD_ATTRIBUTE_FAM_OR_ASSEM 0x0005
86 #define FIELD_ATTRIBUTE_PUBLIC 0x0006
88 #define FIELD_ATTRIBUTE_STATIC 0x0010
89 #define FIELD_ATTRIBUTE_INIT_ONLY 0x0020
90 #define FIELD_ATTRIBUTE_LITERAL 0x0040
91 #define FIELD_ATTRIBUTE_NOT_SERIALIZED 0x0080
92 #define FIELD_ATTRIBUTE_SPECIAL_NAME 0x0200
93 #define FIELD_ATTRIBUTE_PINVOKE_IMPL 0x2000
95 /* For runtime use only */
96 #define FIELD_ATTRIBUTE_RESERVED_MASK 0x9500
97 #define FIELD_ATTRIBUTE_RT_SPECIAL_NAME 0x0400
98 #define FIELD_ATTRIBUTE_HAS_FIELD_MARSHAL 0x1000
99 #define FIELD_ATTRIBUTE_HAS_DEFAULT 0x8000
100 #define FIELD_ATTRIBUTE_HAS_FIELD_RVA 0x0100
103 * Type Attributes (21.1.13).
105 #define TYPE_ATTRIBUTE_VISIBILITY_MASK 0x00000007
106 #define TYPE_ATTRIBUTE_NOT_PUBLIC 0x00000000
107 #define TYPE_ATTRIBUTE_PUBLIC 0x00000001
108 #define TYPE_ATTRIBUTE_NESTED_PUBLIC 0x00000002
109 #define TYPE_ATTRIBUTE_NESTED_PRIVATE 0x00000003
110 #define TYPE_ATTRIBUTE_NESTED_FAMILY 0x00000004
111 #define TYPE_ATTRIBUTE_NESTED_ASSEMBLY 0x00000005
112 #define TYPE_ATTRIBUTE_NESTED_FAM_AND_ASSEM 0x00000006
113 #define TYPE_ATTRIBUTE_NESTED_FAM_OR_ASSEM 0x00000007
115 #define TYPE_ATTRIBUTE_LAYOUT_MASK 0x00000018
116 #define TYPE_ATTRIBUTE_AUTO_LAYOUT 0x00000000
117 #define TYPE_ATTRIBUTE_SEQUENTIAL_LAYOUT 0x00000008
118 #define TYPE_ATTRIBUTE_EXPLICIT_LAYOUT 0x00000010
120 #define TYPE_ATTRIBUTE_CLASS_SEMANTIC_MASK 0x00000020
121 #define TYPE_ATTRIBUTE_CLASS 0x00000000
122 #define TYPE_ATTRIBUTE_INTERFACE 0x00000020
124 #define TYPE_ATTRIBUTE_ABSTRACT 0x00000080
125 #define TYPE_ATTRIBUTE_SEALED 0x00000100
126 #define TYPE_ATTRIBUTE_SPECIAL_NAME 0x00000400
128 #define TYPE_ATTRIBUTE_IMPORT 0x00001000
129 #define TYPE_ATTRIBUTE_SERIALIZABLE 0x00002000
130 #define TYPE_ATTRIBUTE_WINDOWS_RUNTIME 0x00004000
133 #define TYPE_ATTRIBUTE_STRING_FORMAT_MASK 0x00030000
134 #define TYPE_ATTRIBUTE_ANSI_CLASS 0x00000000
135 #define TYPE_ATTRIBUTE_UNICODE_CLASS 0x00010000
136 #define TYPE_ATTRIBUTE_AUTO_CLASS 0x00020000
138 #define TYPE_ATTRIBUTE_BEFORE_FIELD_INIT 0x00100000
139 #define TYPE_ATTRIBUTE_FORWARDER 0x00200000
141 #define TYPE_ATTRIBUTE_RESERVED_MASK 0x00040800
142 #define TYPE_ATTRIBUTE_RT_SPECIAL_NAME 0x00000800
143 #define TYPE_ATTRIBUTE_HAS_SECURITY 0x00040000
146 * Method Attributes (22.1.9)
149 #define METHOD_IMPL_ATTRIBUTE_CODE_TYPE_MASK 0x0003
150 #define METHOD_IMPL_ATTRIBUTE_IL 0x0000
151 #define METHOD_IMPL_ATTRIBUTE_NATIVE 0x0001
152 #define METHOD_IMPL_ATTRIBUTE_OPTIL 0x0002
153 #define METHOD_IMPL_ATTRIBUTE_RUNTIME 0x0003
155 #define METHOD_IMPL_ATTRIBUTE_MANAGED_MASK 0x0004
156 #define METHOD_IMPL_ATTRIBUTE_UNMANAGED 0x0004
157 #define METHOD_IMPL_ATTRIBUTE_MANAGED 0x0000
159 #define METHOD_IMPL_ATTRIBUTE_FORWARD_REF 0x0010
160 #define METHOD_IMPL_ATTRIBUTE_PRESERVE_SIG 0x0080
161 #define METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL 0x1000
162 #define METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED 0x0020
163 #define METHOD_IMPL_ATTRIBUTE_NOINLINING 0x0008
164 #define METHOD_IMPL_ATTRIBUTE_NOOPTIMIZATION 0x0040
165 #define METHOD_IMPL_ATTRIBUTE_MAX_METHOD_IMPL_VAL 0xffff
166 #define METHOD_IMPL_ATTRIBUTE_AGGRESSIVE_INLINING 0x0100
168 #define METHOD_ATTRIBUTE_MEMBER_ACCESS_MASK 0x0007
169 #define METHOD_ATTRIBUTE_COMPILER_CONTROLLED 0x0000
170 #define METHOD_ATTRIBUTE_PRIVATE 0x0001
171 #define METHOD_ATTRIBUTE_FAM_AND_ASSEM 0x0002
172 #define METHOD_ATTRIBUTE_ASSEM 0x0003
173 #define METHOD_ATTRIBUTE_FAMILY 0x0004
174 #define METHOD_ATTRIBUTE_FAM_OR_ASSEM 0x0005
175 #define METHOD_ATTRIBUTE_PUBLIC 0x0006
177 #define METHOD_ATTRIBUTE_STATIC 0x0010
178 #define METHOD_ATTRIBUTE_FINAL 0x0020
179 #define METHOD_ATTRIBUTE_VIRTUAL 0x0040
180 #define METHOD_ATTRIBUTE_HIDE_BY_SIG 0x0080
182 #define METHOD_ATTRIBUTE_VTABLE_LAYOUT_MASK 0x0100
183 #define METHOD_ATTRIBUTE_REUSE_SLOT 0x0000
184 #define METHOD_ATTRIBUTE_NEW_SLOT 0x0100
186 #define METHOD_ATTRIBUTE_STRICT 0x0200
187 #define METHOD_ATTRIBUTE_ABSTRACT 0x0400
188 #define METHOD_ATTRIBUTE_SPECIAL_NAME 0x0800
190 #define METHOD_ATTRIBUTE_PINVOKE_IMPL 0x2000
191 #define METHOD_ATTRIBUTE_UNMANAGED_EXPORT 0x0008
193 #define METHOD_ATTRIBUTE_REQSECOBJ 0x8000
196 * For runtime use only
198 #define METHOD_ATTRIBUTE_RESERVED_MASK 0xd000
199 #define METHOD_ATTRIBUTE_RT_SPECIAL_NAME 0x1000
200 #define METHOD_ATTRIBUTE_HAS_SECURITY 0x4000
201 #define METHOD_ATTRIBUTE_REQUIRE_SEC_OBJECT 0x8000
205 * Method Semantics ([MethodSemanticAttributes]) 22.1.10
208 #define METHOD_SEMANTIC_SETTER 0x0001
209 #define METHOD_SEMANTIC_GETTER 0x0002
210 #define METHOD_SEMANTIC_OTHER 0x0004
211 #define METHOD_SEMANTIC_ADD_ON 0x0008
212 #define METHOD_SEMANTIC_REMOVE_ON 0x0010
213 #define METHOD_SEMANTIC_FIRE 0x0020
216 * Flags for Params (22.1.12)
218 #define PARAM_ATTRIBUTE_IN 0x0001
219 #define PARAM_ATTRIBUTE_OUT 0x0002
220 #define PARAM_ATTRIBUTE_OPTIONAL 0x0010
221 #define PARAM_ATTRIBUTE_RESERVED_MASK 0xf000
222 #define PARAM_ATTRIBUTE_HAS_DEFAULT 0x1000
223 #define PARAM_ATTRIBUTE_HAS_FIELD_MARSHAL 0x2000
224 #define PARAM_ATTRIBUTE_UNUSED 0xcfe0
227 * 22.1.12 PropertyAttributes
229 #define PROPERTY_ATTRIBUTE_SPECIAL_NAME 0x0200
230 #define PROPERTY_ATTRIBUTE_RESERVED_MASK 0xf400
231 #define PROPERTY_ATTRIBUTE_RT_SPECIAL_NAME 0x0400
232 #define PROPERTY_ATTRIBUTE_HAS_DEFAULT 0x1000
233 #define PROPERTY_ATTRIBUTE_UNUSED 0xe9ff
236 * 22.1.7 Flags for ImplMap [PInvokeAttributes]
238 #define PINVOKE_ATTRIBUTE_NO_MANGLE 0x0001
239 #define PINVOKE_ATTRIBUTE_CHAR_SET_MASK 0x0006
240 #define PINVOKE_ATTRIBUTE_CHAR_SET_NOT_SPEC 0x0000
241 #define PINVOKE_ATTRIBUTE_CHAR_SET_ANSI 0x0002
242 #define PINVOKE_ATTRIBUTE_CHAR_SET_UNICODE 0x0004
243 #define PINVOKE_ATTRIBUTE_CHAR_SET_AUTO 0x0006
244 #define PINVOKE_ATTRIBUTE_BEST_FIT_ENABLED 0x0010
245 #define PINVOKE_ATTRIBUTE_BEST_FIT_DISABLED 0x0020
246 #define PINVOKE_ATTRIBUTE_BEST_FIT_MASK 0x0030
247 #define PINVOKE_ATTRIBUTE_SUPPORTS_LAST_ERROR 0x0040
248 #define PINVOKE_ATTRIBUTE_CALL_CONV_MASK 0x0700
249 #define PINVOKE_ATTRIBUTE_CALL_CONV_WINAPI 0x0100
250 #define PINVOKE_ATTRIBUTE_CALL_CONV_CDECL 0x0200
251 #define PINVOKE_ATTRIBUTE_CALL_CONV_STDCALL 0x0300
252 #define PINVOKE_ATTRIBUTE_CALL_CONV_THISCALL 0x0400
253 #define PINVOKE_ATTRIBUTE_CALL_CONV_FASTCALL 0x0500
254 #define PINVOKE_ATTRIBUTE_THROW_ON_UNMAPPABLE_ENABLED 0x1000
255 #define PINVOKE_ATTRIBUTE_THROW_ON_UNMAPPABLE_DISABLED 0x2000
256 #define PINVOKE_ATTRIBUTE_THROW_ON_UNMAPPABLE_MASK 0x3000
257 #define PINVOKE_ATTRIBUTE_BEST_FIT_MASK 0x0030
258 #define PINVOKE_ATTRIBUTE_CALL_CONV_GENERIC 0x0010
259 #define PINVOKE_ATTRIBUTE_CALL_CONV_GENERICINST 0x000a
262 * 21.5 AssemblyRefs
264 #define ASSEMBLYREF_FULL_PUBLIC_KEY_FLAG 0x00000001
265 #define ASSEMBLYREF_RETARGETABLE_FLAG 0x00000100
266 #define ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG 0x00008000
267 #define ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG 0x00004000
268 #endif