2 * tabledefs.h: This file contains the various definitions for constants
3 * found on the metadata tables
6 * Miguel de Icaza (miguel@ximian.com)
8 * (C) 2001 Ximian, Inc.
10 * From the ECMA documentation
13 #ifndef _MONO_METADATA_TABLEDEFS_H_
14 #define _MONO_METADATA_TABLEDEFS_H_
17 * 22.1.1 Values for AssemblyHashAlgorithm
22 ASSEMBLY_HASH_MD5 = 0x8003,
23 ASSEMBLY_HASH_SHA1 = 0x8004
27 * 22.1.4 Flags for Event.EventAttributes
31 EVENT_SPECIALNAME = 0x0200,
32 EVENT_RTSPECIALNAME = 0x0400
36 * 22.1.6 Flags for FileAttributes
40 FILE_CONTAINS_METADATA = 0,
41 FILE_CONTAINS_NO_METADATA = 1
45 * Field Attributes (21.1.5).
48 #define FIELD_ATTRIBUTE_FIELD_ACCESS_MASK 0x0007
49 #define FIELD_ATTRIBUTE_COMPILER_CONTROLLED 0x0000
50 #define FIELD_ATTRIBUTE_PRIVATE 0x0001
51 #define FIELD_ATTRIBUTE_FAM_AND_ASSEM 0x0002
52 #define FIELD_ATTRIBUTE_ASSEMBLY 0x0003
53 #define FIELD_ATTRIBUTE_FAMILY 0x0004
54 #define FIELD_ATTRIBUTE_FAM_OR_ASSEM 0x0005
55 #define FIELD_ATTRIBUTE_PUBLIC 0x0006
57 #define FIELD_ATTRIBUTE_STATIC 0x0010
58 #define FIELD_ATTRIBUTE_INIT_ONLY 0x0020
59 #define FIELD_ATTRIBUTE_LITERAL 0x0040
60 #define FIELD_ATTRIBUTE_NOT_SERIALIZED 0x0080
61 #define FIELD_ATTRIBUTE_SPECIAL_NAME 0x0200
62 #define FIELD_ATTRIBUTE_PINVOKE_IMPL 0x2000
64 /* For runtime use only */
65 #define FIELD_ATTRIBUTE_RESERVED_MASK 0x9500
66 #define FIELD_ATTRIBUTE_RT_SPECIAL_NAME 0x0400
67 #define FIELD_ATTRIBUTE_HAS_FIELD_MARSHAL 0x1000
68 #define FIELD_ATTRIBUTE_HAS_DEFAULT 0x8000
69 #define FIELD_ATTRIBUTE_HAS_FIELD_RVA 0x0100
72 * Type Attributes (21.1.13).
74 #define TYPE_ATTRIBUTE_VISIBILITY_MASK 0x00000007
75 #define TYPE_ATTRIBUTE_NOT_PUBLIC 0x00000000
76 #define TYPE_ATTRIBUTE_PUBLIC 0x00000001
77 #define TYPE_ATTRIBUTE_NESTED_PUBLIC 0x00000002
78 #define TYPE_ATTRIBUTE_NESTED_PRIVATE 0x00000003
79 #define TYPE_ATTRIBUTE_NESTED_FAMILY 0x00000004
80 #define TYPE_ATTRIBUTE_NESTED_ASSEMBLY 0x00000005
81 #define TYPE_ATTRIBUTE_NESTED_FAM_AND_ASSEM 0x00000006
82 #define TYPE_ATTRIBUTE_NESTED_FAM_OR_ASSEM 0x00000007
84 #define TYPE_ATTRIBUTE_LAYOUT_MASK 0x00000018
85 #define TYPE_ATTRIBUTE_AUTO_LAYOUT 0x00000000
86 #define TYPE_ATTRIBUTE_SEQUENTIAL_LAYOUT 0x00000008
87 #define TYPE_ATTRIBUTE_EXPLICIT_LAYOUT 0x00000010
89 #define TYPE_ATTRIBUTE_CLASS_SEMANTIC_MASK 0x00000020
90 #define TYPE_ATTRIBUTE_CLASS 0x00000000
91 #define TYPE_ATTRIBUTE_INTERFACE 0x00000020
93 #define TYPE_ATTRIBUTE_ABSTRACT 0x00000080
94 #define TYPE_ATTRIBUTE_SEALED 0x00000100
95 #define TYPE_ATTRIBUTE_SPECIAL_NAME 0x00000400
97 #define TYPE_ATTRIBUTE_IMPORT 0x00001000
98 #define TYPE_ATTRIBUTE_SERIALIZABLE 0x00002000
100 #define TYPE_ATTRIBUTE_STRING_FORMAT_MASK 0x00030000
101 #define TYPE_ATTRIBUTE_ANSI_CLASS 0x00000000
102 #define TYPE_ATTRIBUTE_UNICODE_CLASS 0x00010000
103 #define TYPE_ATTRIBUTE_AUTO_CLASS 0x00020000
105 #define TYPE_ATTRIBUTE_BEFORE_FIELD_INIT 0x00100000
107 #define TYPE_ATTRIBUTE_RESERVED_MASK 0x00040800
108 #define TYPE_ATTRIBUTE_RT_SPECIAL_NAME 0x00000800
109 #define TYPE_ATTRIBUTE_HAS_SECURITY 0x00040000
112 * Method Attributes (22.1.9)
115 #define METHOD_IMPL_ATTRIBUTE_CODE_TYPE_MASK 0x0003
116 #define METHOD_IMPL_ATTRIBUTE_IL 0x0000
117 #define METHOD_IMPL_ATTRIBUTE_NATIVE 0x0001
118 #define METHOD_IMPL_ATTRIBUTE_OPTIL 0x0002
119 #define METHOD_IMPL_ATTRIBUTE_RUNTIME 0x0003
121 #define METHOD_IMPL_ATTRIBUTE_MANAGED_MASK 0x0004
122 #define METHOD_IMPL_ATTRIBUTE_UNMANAGED 0x0004
123 #define METHOD_IMPL_ATTRIBUTE_MANAGED 0x0000
125 #define METHOD_IMPL_ATTRIBUTE_FORWARD_REF 0x0010
126 #define METHOD_IMPL_ATTRIBUTE_PRESERVE_SIG 0x0080
127 #define METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL 0x1000
128 #define METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED 0x0020
129 #define METHOD_IMPL_ATTRIBUTE_NOINLINING 0x0008
130 #define METHOD_IMPL_ATTRIBUTE_MAX_METHOD_IMPL_VAL 0xffff
132 #define METHOD_ATTRIBUTE_MEMBER_ACCESS_MASK 0x0007
133 #define METHOD_ATTRIBUTE_COMPILER_CONTROLLED 0x0000
134 #define METHOD_ATTRIBUTE_PRIVATE 0x0001
135 #define METHOD_ATTRIBUTE_FAM_AND_ASSEM 0x0002
136 #define METHOD_ATTRIBUTE_ASSEM 0x0003
137 #define METHOD_ATTRIBUTE_FAMILY 0x0004
138 #define METHOD_ATTRIBUTE_FAM_OR_ASSEM 0x0005
139 #define METHOD_ATTRIBUTE_PUBLIC 0x0006
141 #define METHOD_ATTRIBUTE_STATIC 0x0010
142 #define METHOD_ATTRIBUTE_FINAL 0x0020
143 #define METHOD_ATTRIBUTE_VIRTUAL 0x0040
144 #define METHOD_ATTRIBUTE_HIDE_BY_SIG 0x0080
146 #define METHOD_ATTRIBUTE_VTABLE_LAYOUT_MASK 0x0100
147 #define METHOD_ATTRIBUTE_REUSE_SLOT 0x0000
148 #define METHOD_ATTRIBUTE_NEW_SLOT 0x0100
150 #define METHOD_ATTRIBUTE_ABSTRACT 0x0400
151 #define METHOD_ATTRIBUTE_SPECIAL_NAME 0x0800
153 #define METHOD_ATTRIBUTE_PINVOKE_IMPL 0x2000
154 #define METHOD_ATTRIBUTE_UNMANAGED_EXPORT 0x0008
157 * For runtime use only
159 #define METHOD_ATTRIBUTE_RESERVED_MASK 0xd000
160 #define METHOD_ATTRIBUTE_RT_SPECIAL_NAME 0x1000
161 #define METHOD_ATTRIBUTE_HAS_SECURITY 0x4000
162 #define METHOD_ATTRIBUTE_REQUIRE_SEC_OBJECT 0x8000
166 * Method Semantics ([MethodSemanticAttributes]) 22.1.10
169 #define METHOD_SEMANTIC_SETTER 0x0001
170 #define METHOD_SEMANTIC_GETTER 0x0002
171 #define METHOD_SEMANTIC_OTHER 0x0004
172 #define METHOD_SEMANTIC_ADD_ON 0x0008
173 #define METHOD_SEMANTIC_REMOVE_ON 0x0010
174 #define METHOD_SEMANTIC_FIRE 0x0020
177 * Flags for Params (22.1.11)
179 #define PARAM_ATTRIBUTE_IN 0x0001
180 #define PARAM_ATTRIBUTE_OUT 0x0002
181 #define PARAM_ATTRIBUTE_OPTIONAL 0x0004
182 #define PARAM_ATTRIBUTE_RESERVED_MASK 0xf000
183 #define PARAM_ATTRIBUTE_HAS_DEFAULT 0x1000
184 #define PARAM_ATTRIBUTE_HAS_FIELD_MARSHAL 0x2000
185 #define PARAM_ATTRIBUTE_UNUSED 0xcfe0
188 * 22.1.12 PropertyAttributes
190 #define PROPERTY_ATTRIBUTE_SPECIAL_NAME 0x0200
191 #define PROPERTY_ATTRIBUTE_RESERVED_MASK 0xf400
192 #define PROPERTY_ATTRIBUTE_RT_SPECIAL_NAME 0x0400
193 #define PROPERTY_ATTRIBUTE_HAS_DEFAULT 0x1000
194 #define PROPERTY_ATTRIBUTE_UNUSED 0xe9ff
197 * 22.1.7 Flags for ImplMap [PInvokeAttributes]
199 #define PINVOKE_ATTRIBUTE_NO_MANGLE 0x0001
200 #define PINVOKE_ATTRIBUTE_CHAR_SET_MASK 0x0006
201 #define PINVOKE_ATTRIBUTE_CHAR_SET_NOT_SPEC 0x0000
202 #define PINVOKE_ATTRIBUTE_CHAR_SET_ANSI 0x0002
203 #define PINVOKE_ATTRIBUTE_CHAR_SET_UNICODE 0x0004
204 #define PINVOKE_ATTRIBUTE_CHAR_SET_AUTO 0x0006
205 #define PINVOKE_ATTRIBUTE_SUPPORTS_LAST_ERROR 0x0040
206 #define PINVOKE_ATTRIBUTE_CALL_CONV_MASK 0x0700
207 #define PINVOKE_ATTRIBUTE_CALL_CONV_WINAPI 0x0100
208 #define PINVOKE_ATTRIBUTE_CALL_CONV_CDECL 0x0200
209 #define PINVOKE_ATTRIBUTE_CALL_CONV_STDCALL 0x0300
210 #define PINVOKE_ATTRIBUTE_CALL_CONV_THISCALL 0x0400
211 #define PINVOKE_ATTRIBUTE_CALL_CONV_FASTCALL 0x0500