Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / metadata / tabledefs.h
1 /*
2  * tabledefs.h: This file contains the various definitions for constants
3  * found on the metadata tables
4  *
5  * Author:
6  *   Miguel de Icaza (miguel@ximian.com)
7  *
8  * (C) 2001 Ximian, Inc.
9  *
10  * From the ECMA documentation
11  */
12  
13 #ifndef _MONO_METADATA_TABLEDEFS_H_
14 #define _MONO_METADATA_TABLEDEFS_H_
15
16 /*
17  * 22.1.1  Values for AssemblyHashAlgorithm 
18  */
19
20 enum {
21         ASSEMBLY_HASH_NONE,
22         ASSEMBLY_HASH_MD5  = 0x8003,
23         ASSEMBLY_HASH_SHA1 = 0x8004
24 };
25
26 /*
27  * 22.1.4 Flags for Event.EventAttributes
28  */
29
30 enum {
31         EVENT_SPECIALNAME   = 0x0200,
32         EVENT_RTSPECIALNAME = 0x0400
33 };
34
35 /*
36  * 22.1.6 Flags for FileAttributes
37  */
38
39 enum {
40         FILE_CONTAINS_METADATA      = 0,
41         FILE_CONTAINS_NO_METADATA   = 1
42 };
43
44 enum {
45         SECURITY_ACTION_DEMAND        = 2,
46         SECURITY_ACTION_ASSERT        = 3,
47         SECURITY_ACTION_DENY          = 4,
48         SECURITY_ACTION_PERMITONLY    = 5,
49         SECURITY_ACTION_LINKDEMAND    = 6,
50         SECURITY_ACTION_INHERITDEMAND = 7,
51         SECURITY_ACTION_REQMIN        = 8,
52         SECURITY_ACTION_REQOPT        = 9,
53         SECURITY_ACTION_REQREFUSE     = 10
54 };
55
56 /*
57  * Field Attributes (21.1.5).
58  */
59
60 #define FIELD_ATTRIBUTE_FIELD_ACCESS_MASK     0x0007
61 #define FIELD_ATTRIBUTE_COMPILER_CONTROLLED   0x0000
62 #define FIELD_ATTRIBUTE_PRIVATE               0x0001
63 #define FIELD_ATTRIBUTE_FAM_AND_ASSEM         0x0002
64 #define FIELD_ATTRIBUTE_ASSEMBLY              0x0003
65 #define FIELD_ATTRIBUTE_FAMILY                0x0004
66 #define FIELD_ATTRIBUTE_FAM_OR_ASSEM          0x0005
67 #define FIELD_ATTRIBUTE_PUBLIC                0x0006
68
69 #define FIELD_ATTRIBUTE_STATIC                0x0010
70 #define FIELD_ATTRIBUTE_INIT_ONLY             0x0020
71 #define FIELD_ATTRIBUTE_LITERAL               0x0040
72 #define FIELD_ATTRIBUTE_NOT_SERIALIZED        0x0080
73 #define FIELD_ATTRIBUTE_SPECIAL_NAME          0x0200
74 #define FIELD_ATTRIBUTE_PINVOKE_IMPL          0x2000
75
76 /* For runtime use only */
77 #define FIELD_ATTRIBUTE_RESERVED_MASK         0x9500
78 #define FIELD_ATTRIBUTE_RT_SPECIAL_NAME       0x0400
79 #define FIELD_ATTRIBUTE_HAS_FIELD_MARSHAL     0x1000
80 #define FIELD_ATTRIBUTE_HAS_DEFAULT           0x8000
81 #define FIELD_ATTRIBUTE_HAS_FIELD_RVA         0x0100
82
83 /*
84  * Type Attributes (21.1.13).
85  */
86 #define TYPE_ATTRIBUTE_VISIBILITY_MASK       0x00000007
87 #define TYPE_ATTRIBUTE_NOT_PUBLIC            0x00000000
88 #define TYPE_ATTRIBUTE_PUBLIC                0x00000001
89 #define TYPE_ATTRIBUTE_NESTED_PUBLIC         0x00000002
90 #define TYPE_ATTRIBUTE_NESTED_PRIVATE        0x00000003
91 #define TYPE_ATTRIBUTE_NESTED_FAMILY         0x00000004
92 #define TYPE_ATTRIBUTE_NESTED_ASSEMBLY       0x00000005
93 #define TYPE_ATTRIBUTE_NESTED_FAM_AND_ASSEM  0x00000006
94 #define TYPE_ATTRIBUTE_NESTED_FAM_OR_ASSEM   0x00000007
95
96 #define TYPE_ATTRIBUTE_LAYOUT_MASK           0x00000018
97 #define TYPE_ATTRIBUTE_AUTO_LAYOUT           0x00000000
98 #define TYPE_ATTRIBUTE_SEQUENTIAL_LAYOUT     0x00000008
99 #define TYPE_ATTRIBUTE_EXPLICIT_LAYOUT       0x00000010
100
101 #define TYPE_ATTRIBUTE_CLASS_SEMANTIC_MASK   0x00000020
102 #define TYPE_ATTRIBUTE_CLASS                 0x00000000
103 #define TYPE_ATTRIBUTE_INTERFACE             0x00000020
104
105 #define TYPE_ATTRIBUTE_ABSTRACT              0x00000080
106 #define TYPE_ATTRIBUTE_SEALED                0x00000100
107 #define TYPE_ATTRIBUTE_SPECIAL_NAME          0x00000400
108
109 #define TYPE_ATTRIBUTE_IMPORT                0x00001000
110 #define TYPE_ATTRIBUTE_SERIALIZABLE          0x00002000
111
112 #define TYPE_ATTRIBUTE_STRING_FORMAT_MASK    0x00030000
113 #define TYPE_ATTRIBUTE_ANSI_CLASS            0x00000000
114 #define TYPE_ATTRIBUTE_UNICODE_CLASS         0x00010000
115 #define TYPE_ATTRIBUTE_AUTO_CLASS            0x00020000
116
117 #define TYPE_ATTRIBUTE_BEFORE_FIELD_INIT     0x00100000
118
119 #define TYPE_ATTRIBUTE_RESERVED_MASK         0x00040800
120 #define TYPE_ATTRIBUTE_RT_SPECIAL_NAME       0x00000800
121 #define TYPE_ATTRIBUTE_HAS_SECURITY          0x00040000
122
123 /*
124  * Method Attributes (22.1.9)
125  */
126
127 #define METHOD_IMPL_ATTRIBUTE_CODE_TYPE_MASK       0x0003
128 #define METHOD_IMPL_ATTRIBUTE_IL                   0x0000
129 #define METHOD_IMPL_ATTRIBUTE_NATIVE               0x0001
130 #define METHOD_IMPL_ATTRIBUTE_OPTIL                0x0002
131 #define METHOD_IMPL_ATTRIBUTE_RUNTIME              0x0003
132
133 #define METHOD_IMPL_ATTRIBUTE_MANAGED_MASK         0x0004
134 #define METHOD_IMPL_ATTRIBUTE_UNMANAGED            0x0004
135 #define METHOD_IMPL_ATTRIBUTE_MANAGED              0x0000
136
137 #define METHOD_IMPL_ATTRIBUTE_FORWARD_REF          0x0010
138 #define METHOD_IMPL_ATTRIBUTE_PRESERVE_SIG         0x0080
139 #define METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL        0x1000
140 #define METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED         0x0020
141 #define METHOD_IMPL_ATTRIBUTE_NOINLINING           0x0008
142 #define METHOD_IMPL_ATTRIBUTE_MAX_METHOD_IMPL_VAL  0xffff
143
144 #define METHOD_ATTRIBUTE_MEMBER_ACCESS_MASK        0x0007
145 #define METHOD_ATTRIBUTE_COMPILER_CONTROLLED       0x0000
146 #define METHOD_ATTRIBUTE_PRIVATE                   0x0001
147 #define METHOD_ATTRIBUTE_FAM_AND_ASSEM             0x0002
148 #define METHOD_ATTRIBUTE_ASSEM                     0x0003
149 #define METHOD_ATTRIBUTE_FAMILY                    0x0004
150 #define METHOD_ATTRIBUTE_FAM_OR_ASSEM              0x0005
151 #define METHOD_ATTRIBUTE_PUBLIC                    0x0006
152
153 #define METHOD_ATTRIBUTE_STATIC                    0x0010
154 #define METHOD_ATTRIBUTE_FINAL                     0x0020
155 #define METHOD_ATTRIBUTE_VIRTUAL                   0x0040
156 #define METHOD_ATTRIBUTE_HIDE_BY_SIG               0x0080
157
158 #define METHOD_ATTRIBUTE_VTABLE_LAYOUT_MASK        0x0100
159 #define METHOD_ATTRIBUTE_REUSE_SLOT                0x0000
160 #define METHOD_ATTRIBUTE_NEW_SLOT                  0x0100
161
162 #define METHOD_ATTRIBUTE_ABSTRACT                  0x0400
163 #define METHOD_ATTRIBUTE_SPECIAL_NAME              0x0800
164
165 #define METHOD_ATTRIBUTE_PINVOKE_IMPL              0x2000
166 #define METHOD_ATTRIBUTE_UNMANAGED_EXPORT          0x0008
167
168 /*
169  * For runtime use only
170  */
171 #define METHOD_ATTRIBUTE_RESERVED_MASK             0xd000
172 #define METHOD_ATTRIBUTE_RT_SPECIAL_NAME           0x1000
173 #define METHOD_ATTRIBUTE_HAS_SECURITY              0x4000
174 #define METHOD_ATTRIBUTE_REQUIRE_SEC_OBJECT        0x8000
175
176
177 /*
178  * Method Semantics ([MethodSemanticAttributes]) 22.1.10
179  */
180
181 #define METHOD_SEMANTIC_SETTER    0x0001
182 #define METHOD_SEMANTIC_GETTER    0x0002
183 #define METHOD_SEMANTIC_OTHER     0x0004
184 #define METHOD_SEMANTIC_ADD_ON    0x0008
185 #define METHOD_SEMANTIC_REMOVE_ON 0x0010
186 #define METHOD_SEMANTIC_FIRE      0x0020
187
188 /*
189  * Flags for Params (22.1.11)
190  */
191 #define PARAM_ATTRIBUTE_IN                 0x0001
192 #define PARAM_ATTRIBUTE_OUT                0x0002
193 #define PARAM_ATTRIBUTE_OPTIONAL           0x0004
194 #define PARAM_ATTRIBUTE_RESERVED_MASK      0xf000
195 #define PARAM_ATTRIBUTE_HAS_DEFAULT        0x1000
196 #define PARAM_ATTRIBUTE_HAS_FIELD_MARSHAL  0x2000
197 #define PARAM_ATTRIBUTE_UNUSED             0xcfe0
198
199 /*
200  * 22.1.12 PropertyAttributes
201  */
202 #define PROPERTY_ATTRIBUTE_SPECIAL_NAME    0x0200
203 #define PROPERTY_ATTRIBUTE_RESERVED_MASK   0xf400
204 #define PROPERTY_ATTRIBUTE_RT_SPECIAL_NAME 0x0400
205 #define PROPERTY_ATTRIBUTE_HAS_DEFAULT     0x1000
206 #define PROPERTY_ATTRIBUTE_UNUSED          0xe9ff
207
208 /*
209  * 22.1.7 Flags for ImplMap [PInvokeAttributes]
210  */
211 #define PINVOKE_ATTRIBUTE_NO_MANGLE           0x0001
212 #define PINVOKE_ATTRIBUTE_CHAR_SET_MASK       0x0006
213 #define PINVOKE_ATTRIBUTE_CHAR_SET_NOT_SPEC   0x0000
214 #define PINVOKE_ATTRIBUTE_CHAR_SET_ANSI       0x0002
215 #define PINVOKE_ATTRIBUTE_CHAR_SET_UNICODE    0x0004
216 #define PINVOKE_ATTRIBUTE_CHAR_SET_AUTO       0x0006
217 #define PINVOKE_ATTRIBUTE_SUPPORTS_LAST_ERROR 0x0040
218 #define PINVOKE_ATTRIBUTE_CALL_CONV_MASK      0x0700
219 #define PINVOKE_ATTRIBUTE_CALL_CONV_WINAPI    0x0100
220 #define PINVOKE_ATTRIBUTE_CALL_CONV_CDECL     0x0200
221 #define PINVOKE_ATTRIBUTE_CALL_CONV_STDCALL   0x0300
222 #define PINVOKE_ATTRIBUTE_CALL_CONV_THISCALL  0x0400
223 #define PINVOKE_ATTRIBUTE_CALL_CONV_FASTCALL  0x0500
224
225 #endif