2 * attredefs.h: This file contains the various definitions for constants
3 * found on the metadata tables
6 * Miguel de Icaza (miguel@ximian.com)
7 * Paolo Molaro (lupus@ximian.com)
9 * (C) 2001 Ximian, Inc.
10 * (C) 2006 Novell, Inc.
12 * From the ECMA documentation
15 #ifndef _MONO_METADATA_ATTRDEFS_H_
16 #define _MONO_METADATA_ATTRDEFS_H_
19 * 23.1.1 Values for AssemblyHashAlgorithm
22 MONO_ASSEMBLY_HASH_NONE
,
23 MONO_ASSEMBLY_HASH_MD5
= 0x8003,
24 MONO_ASSEMBLY_HASH_SHA1
= 0x8004
31 MONO_ASSEMBLYREF_FULL_PUBLIC_KEY
= 0x0001,
32 MONO_ASSEMBLYREF_RETARGETABLE
= 0x0100,
33 MONO_ASSEMBLYREF_JIT_TRACKING
= 0x8000,
34 MONO_ASSEMBLYREF_NO_JIT_OPT
= 0x4000
38 * 23.1.4 Flags for Event.EventAttributes
41 MONO_EVENT_SPECIALNAME
= 0x0200,
42 MONO_EVENT_RTSPECIALNAME
= 0x0400
46 * Field Attributes (23.1.5).
49 MONO_FIELD_ATTR_FIELD_ACCESS_MASK
= 0x0007,
50 MONO_FIELD_ATTR_COMPILER_CONTROLLED
= 0x0000,
51 MONO_FIELD_ATTR_PRIVATE
= 0x0001,
52 MONO_FIELD_ATTR_FAM_AND_ASSEM
= 0x0002,
53 MONO_FIELD_ATTR_ASSEMBLY
= 0x0003,
54 MONO_FIELD_ATTR_FAMILY
= 0x0004,
55 MONO_FIELD_ATTR_FAM_OR_ASSEM
= 0x0005,
56 MONO_FIELD_ATTR_PUBLIC
= 0x0006,
58 MONO_FIELD_ATTR_STATIC
= 0x0010,
59 MONO_FIELD_ATTR_INIT_ONLY
= 0x0020,
60 MONO_FIELD_ATTR_LITERAL
= 0x0040,
61 MONO_FIELD_ATTR_NOT_SERIALIZED
= 0x0080,
62 MONO_FIELD_ATTR_SPECIAL_NAME
= 0x0200,
63 MONO_FIELD_ATTR_PINVOKE_IMPL
= 0x2000,
65 /* For runtime use only */
66 MONO_FIELD_ATTR_RESERVED_MASK
= 0x9500,
67 MONO_FIELD_ATTR_RT_SPECIAL_NAME
= 0x0400,
68 MONO_FIELD_ATTR_HAS_MARSHAL
= 0x1000,
69 MONO_FIELD_ATTR_HAS_DEFAULT
= 0x8000,
70 MONO_FIELD_ATTR_HAS_RVA
= 0x0100
74 * 23.1.6 Flags for FileAttributes
77 MONO_FILE_HAS_METADATA
= 0,
78 MONO_FILE_HAS_NO_METADATA
= 1
82 * 23.1.7 Flags for generic parameters
85 MONO_GEN_PARAM_VARIANCE_MASK
= 0x0003,
86 MONO_GEN_PARAM_NON_VARIANT
= 0x0000,
87 MONO_GEN_PARAM_VARIANT
= 0x0001,
88 MONO_GEN_PARAM_COVARIANT
= 0x0002,
89 MONO_GEN_PARAM_CONSTRAINT_MASK
= 0x001c,
90 MONO_GEN_PARAM_CONSTRAINT_CLASS
= 0x0004,
91 MONO_GEN_PARAM_CONSTRAINT_VTYPE
= 0x0008,
92 MONO_GEN_PARAM_CONSTRAINT_DCTOR
= 0x0010
96 * 23.1.8 Flags for ImplMap [PInvokeAttributes]
99 MONO_PINVOKE_NO_MANGLE
= 0x0001,
100 MONO_PINVOKE_CHAR_SET_MASK
= 0x0006,
101 MONO_PINVOKE_CHAR_SET_NOT_SPEC
= 0x0000,
102 MONO_PINVOKE_CHAR_SET_ANSI
= 0x0002,
103 MONO_PINVOKE_CHAR_SET_UNICODE
= 0x0004,
104 MONO_PINVOKE_CHAR_SET_AUTO
= 0x0006,
105 MONO_PINVOKE_BEST_FIT_ENABLED
= 0x0010,
106 MONO_PINVOKE_BEST_FIT_DISABLED
= 0x0020,
107 MONO_PINVOKE_BEST_FIT_MASK
= 0x0030,
108 MONO_PINVOKE_SUPPORTS_LAST_ERROR
= 0x0040,
109 MONO_PINVOKE_CALL_CONV_MASK
= 0x0700,
110 MONO_PINVOKE_CALL_CONV_WINAPI
= 0x0100,
111 MONO_PINVOKE_CALL_CONV_CDECL
= 0x0200,
112 MONO_PINVOKE_CALL_CONV_STDCALL
= 0x0300,
113 MONO_PINVOKE_CALL_CONV_THISCALL
= 0x0400,
114 MONO_PINVOKE_CALL_CONV_FASTCALL
= 0x0500,
115 MONO_PINVOKE_THROW_ON_UNMAPPABLE_ENABLED
= 0x1000,
116 MONO_PINVOKE_THROW_ON_UNMAPPABLE_DISABLED
= 0x2000,
117 MONO_PINVOKE_THROW_ON_UNMAPPABLE_MASK
= 0x3000,
118 MONO_PINVOKE_CALL_CONV_GENERIC
= 0x0010,
119 MONO_PINVOKE_CALL_CONV_GENERICINST
= 0x000a
123 * 23.1.9 Flags for ManifestResource
126 MONO_MANIFEST_RESOURCE_VISIBILITY_MASK
= 0x00000007,
127 MONO_MANIFEST_RESOURCE_PUBLIC
= 0x00000001,
128 MONO_MANIFEST_RESOURCE_PRIVATE
= 0x00000002
132 * Method Attributes (23.1.10)
135 MONO_METHOD_ATTR_ACCESS_MASK
= 0x0007,
136 MONO_METHOD_ATTR_COMPILER_CONTROLLED
= 0x0000,
137 MONO_METHOD_ATTR_PRIVATE
= 0x0001,
138 MONO_METHOD_ATTR_FAM_AND_ASSEM
= 0x0002,
139 MONO_METHOD_ATTR_ASSEM
= 0x0003,
140 MONO_METHOD_ATTR_FAMILY
= 0x0004,
141 MONO_METHOD_ATTR_FAM_OR_ASSEM
= 0x0005,
142 MONO_METHOD_ATTR_PUBLIC
= 0x0006,
144 MONO_METHOD_ATTR_STATIC
= 0x0010,
145 MONO_METHOD_ATTR_FINAL
= 0x0020,
146 MONO_METHOD_ATTR_VIRTUAL
= 0x0040,
147 MONO_METHOD_ATTR_HIDE_BY_SIG
= 0x0080,
149 MONO_METHOD_ATTR_VTABLE_LAYOUT_MASK
= 0x0100,
150 MONO_METHOD_ATTR_REUSE_SLOT
= 0x0000,
151 MONO_METHOD_ATTR_NEW_SLOT
= 0x0100,
152 MONO_METHOD_ATTR_STRICT
= 0x0200,
153 MONO_METHOD_ATTR_ABSTRACT
= 0x0400,
155 MONO_METHOD_ATTR_SPECIAL_NAME
= 0x0800,
157 MONO_METHOD_ATTR_PINVOKE_IMPL
= 0x2000,
158 MONO_METHOD_ATTR_UNMANAGED_EXPORT
= 0x0008,
161 * For runtime use only
163 MONO_METHOD_ATTR_RESERVED_MASK
= 0xd000,
164 MONO_METHOD_ATTR_RT_SPECIAL_NAME
= 0x1000,
165 MONO_METHOD_ATTR_HAS_SECURITY
= 0x4000,
166 MONO_METHOD_ATTR_REQUIRE_SEC_OBJECT
= 0x8000
170 * Method Impl Attributes (23.1.11)
173 MONO_METHOD_IMPL_ATTR_CODE_TYPE_MASK
= 0x0003,
174 MONO_METHOD_IMPL_ATTR_IL
= 0x0000,
175 MONO_METHOD_IMPL_ATTR_NATIVE
= 0x0001,
176 MONO_METHOD_IMPL_ATTR_OPTIL
= 0x0002,
177 MONO_METHOD_IMPL_ATTR_RUNTIME
= 0x0003,
179 MONO_METHOD_IMPL_ATTR_MANAGED_MASK
= 0x0004,
180 MONO_METHOD_IMPL_ATTR_UNMANAGED
= 0x0004,
181 MONO_METHOD_IMPL_ATTR_MANAGED
= 0x0000,
183 MONO_METHOD_IMPL_ATTR_FORWARD_REF
= 0x0010,
184 MONO_METHOD_IMPL_ATTR_PRESERVE_SIG
= 0x0080,
185 MONO_METHOD_IMPL_ATTR_INTERNAL_CALL
= 0x1000,
186 MONO_METHOD_IMPL_ATTR_SYNCHRONIZED
= 0x0020,
187 MONO_METHOD_IMPL_ATTR_NOINLINING
= 0x0008,
188 MONO_METHOD_IMPL_ATTR_MAX_METHOD_IMPL_VAL
= 0xffff
192 * Method Semantics ([MethodSemanticAttributes]) 23.1.12,
195 MONO_METHOD_SEMANTIC_SETTER
= 0x0001,
196 MONO_METHOD_SEMANTIC_GETTER
= 0x0002,
197 MONO_METHOD_SEMANTIC_OTHER
= 0x0004,
198 MONO_METHOD_SEMANTIC_ADD_ON
= 0x0008,
199 MONO_METHOD_SEMANTIC_REMOVE_ON
= 0x0010,
200 MONO_METHOD_SEMANTIC_FIRE
= 0x0020
204 * Flags for Params (23.1.13)
207 MONO_PARAM_ATTR_IN
= 0x0001,
208 MONO_PARAM_ATTR_OUT
= 0x0002,
209 MONO_PARAM_ATTR_OPTIONAL
= 0x0010,
210 MONO_PARAM_ATTR_RESERVED_MASK
= 0xf000,
211 MONO_PARAM_ATTR_HAS_DEFAULT
= 0x1000,
212 MONO_PARAM_ATTR_HAS_MARSHAL
= 0x2000,
213 MONO_PARAM_ATTR_UNUSED
= 0xcfe0
217 * 23.1.14 PropertyAttributes
220 MONO_PROPERTY_ATTR_SPECIAL_NAME
= 0x0200,
221 MONO_PROPERTY_ATTR_RESERVED_MASK
= 0xf400,
222 MONO_PROPERTY_ATTR_RT_SPECIAL_NAME
= 0x0400,
223 MONO_PROPERTY_ATTR_HAS_DEFAULT
= 0x1000,
224 MONO_PROPERTY_ATTR_UNUSED
= 0xe9ff
228 * Type Attributes (23.1.15).
231 MONO_TYPE_ATTR_VISIBILITY_MASK
= 0x00000007,
232 MONO_TYPE_ATTR_NOT_PUBLIC
= 0x00000000,
233 MONO_TYPE_ATTR_PUBLIC
= 0x00000001,
234 MONO_TYPE_ATTR_NESTED_PUBLIC
= 0x00000002,
235 MONO_TYPE_ATTR_NESTED_PRIVATE
= 0x00000003,
236 MONO_TYPE_ATTR_NESTED_FAMILY
= 0x00000004,
237 MONO_TYPE_ATTR_NESTED_ASSEMBLY
= 0x00000005,
238 MONO_TYPE_ATTR_NESTED_FAM_AND_ASSEM
= 0x00000006,
239 MONO_TYPE_ATTR_NESTED_FAM_OR_ASSEM
= 0x00000007,
241 MONO_TYPE_ATTR_LAYOUT_MASK
= 0x00000018,
242 MONO_TYPE_ATTR_AUTO_LAYOUT
= 0x00000000,
243 MONO_TYPE_ATTR_SEQUENTIAL_LAYOUT
= 0x00000008,
244 MONO_TYPE_ATTR_EXPLICIT_LAYOUT
= 0x00000010,
246 MONO_TYPE_ATTR_CLASS_SEMANTIC_MASK
= 0x00000020,
247 MONO_TYPE_ATTR_CLASS
= 0x00000000,
248 MONO_TYPE_ATTR_INTERFACE
= 0x00000020,
250 MONO_TYPE_ATTR_ABSTRACT
= 0x00000080,
251 MONO_TYPE_ATTR_SEALED
= 0x00000100,
252 MONO_TYPE_ATTR_SPECIAL_NAME
= 0x00000400,
254 MONO_TYPE_ATTR_IMPORT
= 0x00001000,
255 MONO_TYPE_ATTR_SERIALIZABLE
= 0x00002000,
257 MONO_TYPE_ATTR_STRING_FORMAT_MASK
= 0x00030000,
258 MONO_TYPE_ATTR_ANSI_CLASS
= 0x00000000,
259 MONO_TYPE_ATTR_UNICODE_CLASS
= 0x00010000,
260 MONO_TYPE_ATTR_AUTO_CLASS
= 0x00020000,
261 MONO_TYPE_ATTR_CUSTOM_CLASS
= 0x00030000,
262 MONO_TYPE_ATTR_CUSTOM_MASK
= 0x00c00000,
264 MONO_TYPE_ATTR_BEFORE_FIELD_INIT
= 0x00100000,
265 MONO_TYPE_ATTR_FORWARDER
= 0x00200000,
267 MONO_TYPE_ATTR_RESERVED_MASK
= 0x00040800,
268 MONO_TYPE_ATTR_RT_SPECIAL_NAME
= 0x00000800,
269 MONO_TYPE_ATTR_HAS_SECURITY
= 0x00040000