Merge pull request #4248 from Unity-Technologies/boehm-gc-alloc-fixed
[mono.git] / mono / metadata / row-indexes.h
1
2 #ifndef __MONO_METADATA_ROW_INDEXES_H__
3 #define __MONO_METADATA_ROW_INDEXES_H__
4
5 /*
6  * The last entry in the enum is used to give the number
7  * of columns in the row.
8  */
9
10 enum {
11         MONO_ASSEMBLY_HASH_ALG,
12         MONO_ASSEMBLY_MAJOR_VERSION,
13         MONO_ASSEMBLY_MINOR_VERSION,
14         MONO_ASSEMBLY_BUILD_NUMBER,
15         MONO_ASSEMBLY_REV_NUMBER,
16         MONO_ASSEMBLY_FLAGS,
17         MONO_ASSEMBLY_PUBLIC_KEY,
18         MONO_ASSEMBLY_NAME,
19         MONO_ASSEMBLY_CULTURE,
20         MONO_ASSEMBLY_SIZE
21 };
22
23 enum {
24         MONO_ASSEMBLYOS_PLATFORM,
25         MONO_ASSEMBLYOS_MAJOR_VERSION,
26         MONO_ASSEMBLYOS_MINOR_VERSION,
27         MONO_ASSEMBLYOS_SIZE
28 };
29
30 enum {
31         MONO_ASSEMBLY_PROCESSOR,
32         MONO_ASSEMBLY_PROCESSOR_SIZE
33 };
34
35 enum {
36         MONO_ASSEMBLYREF_MAJOR_VERSION,
37         MONO_ASSEMBLYREF_MINOR_VERSION,
38         MONO_ASSEMBLYREF_BUILD_NUMBER,
39         MONO_ASSEMBLYREF_REV_NUMBER,
40         MONO_ASSEMBLYREF_FLAGS,
41         MONO_ASSEMBLYREF_PUBLIC_KEY,
42         MONO_ASSEMBLYREF_NAME,
43         MONO_ASSEMBLYREF_CULTURE,
44         MONO_ASSEMBLYREF_HASH_VALUE,
45         MONO_ASSEMBLYREF_SIZE
46 };
47
48 enum {
49         MONO_ASSEMBLYREFOS_PLATFORM,
50         MONO_ASSEMBLYREFOS_MAJOR_VERSION,
51         MONO_ASSEMBLYREFOS_MINOR_VERSION,
52         MONO_ASSEMBLYREFOS_ASSEMBLYREF,
53         MONO_ASSEMBLYREFOS_SIZE
54 };
55
56 enum {
57         MONO_ASSEMBLYREFPROC_PROCESSOR,
58         MONO_ASSEMBLYREFPROC_ASSEMBLYREF,
59         MONO_ASSEMBLYREFPROC_SIZE
60 };
61
62 enum {
63         MONO_CLASS_LAYOUT_PACKING_SIZE,
64         MONO_CLASS_LAYOUT_CLASS_SIZE,
65         MONO_CLASS_LAYOUT_PARENT,
66         MONO_CLASS_LAYOUT_SIZE
67 };
68
69 enum {
70         MONO_CONSTANT_TYPE,
71         MONO_CONSTANT_PADDING,
72         MONO_CONSTANT_PARENT,
73         MONO_CONSTANT_VALUE,
74         MONO_CONSTANT_SIZE
75 };
76
77 enum {
78         MONO_CUSTOM_ATTR_PARENT,
79         MONO_CUSTOM_ATTR_TYPE,
80         MONO_CUSTOM_ATTR_VALUE,
81         MONO_CUSTOM_ATTR_SIZE
82 };
83
84 enum {
85         MONO_DECL_SECURITY_ACTION,
86         MONO_DECL_SECURITY_PARENT,
87         MONO_DECL_SECURITY_PERMISSIONSET,
88         MONO_DECL_SECURITY_SIZE
89 };
90
91 enum {
92         MONO_EVENT_MAP_PARENT,
93         MONO_EVENT_MAP_EVENTLIST,
94         MONO_EVENT_MAP_SIZE
95 };
96
97 enum {
98         MONO_EVENT_FLAGS,
99         MONO_EVENT_NAME,
100         MONO_EVENT_TYPE,
101         MONO_EVENT_SIZE
102 };
103
104 enum {
105         MONO_EVENT_POINTER_EVENT,
106         MONO_EVENT_POINTER_SIZE
107 };
108
109 enum {
110         MONO_EXP_TYPE_FLAGS,
111         MONO_EXP_TYPE_TYPEDEF,
112         MONO_EXP_TYPE_NAME,
113         MONO_EXP_TYPE_NAMESPACE,
114         MONO_EXP_TYPE_IMPLEMENTATION,
115         MONO_EXP_TYPE_SIZE
116 };
117
118 enum {
119         MONO_FIELD_FLAGS,
120         MONO_FIELD_NAME,
121         MONO_FIELD_SIGNATURE,
122         MONO_FIELD_SIZE
123 };
124
125 enum {
126         MONO_FIELD_LAYOUT_OFFSET,
127         MONO_FIELD_LAYOUT_FIELD,
128         MONO_FIELD_LAYOUT_SIZE
129 };
130
131 enum {
132         MONO_FIELD_MARSHAL_PARENT,
133         MONO_FIELD_MARSHAL_NATIVE_TYPE,
134         MONO_FIELD_MARSHAL_SIZE
135 };
136
137 enum {
138         MONO_FIELD_POINTER_FIELD,
139         MONO_FIELD_POINTER_SIZE
140 };
141
142 enum {
143         MONO_FIELD_RVA_RVA,
144         MONO_FIELD_RVA_FIELD,
145         MONO_FIELD_RVA_SIZE
146 };
147
148 enum {
149         MONO_FILE_FLAGS,
150         MONO_FILE_NAME,
151         MONO_FILE_HASH_VALUE,
152         MONO_FILE_SIZE
153 };
154
155 enum {
156         MONO_IMPLMAP_FLAGS,
157         MONO_IMPLMAP_MEMBER,
158         MONO_IMPLMAP_NAME,
159         MONO_IMPLMAP_SCOPE,
160         MONO_IMPLMAP_SIZE
161 };
162
163 enum {
164         MONO_INTERFACEIMPL_CLASS,
165         MONO_INTERFACEIMPL_INTERFACE,
166         MONO_INTERFACEIMPL_SIZE
167 };
168
169 enum {
170         MONO_MANIFEST_OFFSET,
171         MONO_MANIFEST_FLAGS,
172         MONO_MANIFEST_NAME,
173         MONO_MANIFEST_IMPLEMENTATION,
174         MONO_MANIFEST_SIZE
175 };
176
177 enum {
178         MONO_MEMBERREF_CLASS,
179         MONO_MEMBERREF_NAME,
180         MONO_MEMBERREF_SIGNATURE,
181         MONO_MEMBERREF_SIZE
182 };
183
184 enum {
185         MONO_METHOD_RVA,
186         MONO_METHOD_IMPLFLAGS,
187         MONO_METHOD_FLAGS,
188         MONO_METHOD_NAME,
189         MONO_METHOD_SIGNATURE,
190         MONO_METHOD_PARAMLIST,
191         MONO_METHOD_SIZE
192 };
193
194 enum {
195         MONO_METHODIMPL_CLASS,
196         MONO_METHODIMPL_BODY,
197         MONO_METHODIMPL_DECLARATION,
198         MONO_METHODIMPL_SIZE
199 };
200
201 enum {
202         MONO_METHOD_POINTER_METHOD,
203         MONO_METHOD_POINTER_SIZE
204 };
205
206 enum {
207         MONO_METHOD_SEMA_SEMANTICS,
208         MONO_METHOD_SEMA_METHOD,
209         MONO_METHOD_SEMA_ASSOCIATION,
210         MONO_METHOD_SEMA_SIZE
211 };
212
213 enum {
214         MONO_MODULE_GENERATION,
215         MONO_MODULE_NAME,
216         MONO_MODULE_MVID,
217         MONO_MODULE_ENC,
218         MONO_MODULE_ENCBASE,
219         MONO_MODULE_SIZE
220 };
221
222 enum {
223         MONO_MODULEREF_NAME,
224         MONO_MODULEREF_SIZE
225 };
226
227 enum {
228         MONO_NESTED_CLASS_NESTED,
229         MONO_NESTED_CLASS_ENCLOSING,
230         MONO_NESTED_CLASS_SIZE
231 };
232
233 enum {
234         MONO_PARAM_FLAGS,
235         MONO_PARAM_SEQUENCE,
236         MONO_PARAM_NAME,
237         MONO_PARAM_SIZE
238 };
239
240 enum {
241         MONO_PARAM_POINTER_PARAM,
242         MONO_PARAM_POINTER_SIZE
243 };
244
245 enum {
246         MONO_PROPERTY_FLAGS,
247         MONO_PROPERTY_NAME,
248         MONO_PROPERTY_TYPE,
249         MONO_PROPERTY_SIZE
250 };
251
252 enum {
253         MONO_PROPERTY_POINTER_PROPERTY,
254         MONO_PROPERTY_POINTER_SIZE
255 };
256
257 enum {
258         MONO_PROPERTY_MAP_PARENT,
259         MONO_PROPERTY_MAP_PROPERTY_LIST,
260         MONO_PROPERTY_MAP_SIZE
261 };
262
263 enum {
264         MONO_STAND_ALONE_SIGNATURE,
265         MONO_STAND_ALONE_SIGNATURE_SIZE
266 };
267
268 enum {
269         MONO_TYPEDEF_FLAGS,
270         MONO_TYPEDEF_NAME,
271         MONO_TYPEDEF_NAMESPACE,
272         MONO_TYPEDEF_EXTENDS,
273         MONO_TYPEDEF_FIELD_LIST,
274         MONO_TYPEDEF_METHOD_LIST,
275         MONO_TYPEDEF_SIZE
276 };
277
278 enum {
279         MONO_TYPEREF_SCOPE,
280         MONO_TYPEREF_NAME,
281         MONO_TYPEREF_NAMESPACE,
282         MONO_TYPEREF_SIZE
283 };
284
285 enum {
286         MONO_TYPESPEC_SIGNATURE,
287         MONO_TYPESPEC_SIZE
288 };
289
290 enum {
291         MONO_GENERICPARAM_NUMBER,
292         MONO_GENERICPARAM_FLAGS,
293         MONO_GENERICPARAM_OWNER,
294         MONO_GENERICPARAM_NAME,
295         
296         MONO_GENERICPARAM_SIZE
297 };
298
299 enum {
300         MONO_METHODSPEC_METHOD,
301         MONO_METHODSPEC_SIGNATURE,
302         MONO_METHODSPEC_SIZE
303 };
304
305 enum {
306         MONO_GENPARCONSTRAINT_GENERICPAR,
307         MONO_GENPARCONSTRAINT_CONSTRAINT,
308         MONO_GENPARCONSTRAINT_SIZE
309 };
310
311 enum {
312         MONO_DOCUMENT_NAME,
313         MONO_DOCUMENT_HASHALG,
314         MONO_DOCUMENT_HASH,
315         MONO_DOCUMENT_LANGUAGE,
316         MONO_DOCUMENT_SIZE
317 };
318
319 enum {
320         MONO_METHODBODY_DOCUMENT,
321         MONO_METHODBODY_SEQ_POINTS,
322         MONO_METHODBODY_SIZE
323 };
324
325 enum {
326         MONO_LOCALSCOPE_METHOD,
327         MONO_LOCALSCOPE_IMPORTSCOPE,
328         MONO_LOCALSCOPE_VARIABLELIST,
329         MONO_LOCALSCOPE_CONSTANTLIST,
330         MONO_LOCALSCOPE_STARTOFFSET,
331         MONO_LOCALSCOPE_LENGTH,
332         MONO_LOCALSCOPE_SIZE
333 };
334
335 enum {
336         MONO_LOCALVARIABLE_ATTRIBUTES,
337         MONO_LOCALVARIABLE_INDEX,
338         MONO_LOCALVARIABLE_NAME,
339         MONO_LOCALVARIABLE_SIZE
340 };
341
342 enum {
343         MONO_CUSTOMDEBUGINFORMATION_PARENT,
344         MONO_CUSTOMDEBUGINFORMATION_KIND,
345         MONO_CUSTOMDEBUGINFORMATION_VALUE,
346         MONO_CUSTOMDEBUGINFORMATION_SIZE
347 };
348
349 /*
350  * Coded Tokens
351  * The _BITS entry is for the bits used in the token.
352  * The _MASK entry is for mask the index out.
353  */
354
355 enum {
356         MONO_TYPEDEFORREF_TYPEDEF,
357         MONO_TYPEDEFORREF_TYPEREF,
358         MONO_TYPEDEFORREF_TYPESPEC,
359         MONO_TYPEDEFORREF_BITS = 2,
360         MONO_TYPEDEFORREF_MASK = 3
361 };
362
363 enum {
364         MONO_HASCONSTANT_FIEDDEF,
365         MONO_HASCONSTANT_PARAM,
366         MONO_HASCONSTANT_PROPERTY,
367         MONO_HASCONSTANT_BITS = 2,
368         MONO_HASCONSTANT_MASK = 3
369 };
370
371 enum {
372         MONO_CUSTOM_ATTR_METHODDEF,
373         MONO_CUSTOM_ATTR_FIELDDEF,
374         MONO_CUSTOM_ATTR_TYPEREF,
375         MONO_CUSTOM_ATTR_TYPEDEF,
376         MONO_CUSTOM_ATTR_PARAMDEF,
377         MONO_CUSTOM_ATTR_INTERFACE,
378         MONO_CUSTOM_ATTR_MEMBERREF,
379         MONO_CUSTOM_ATTR_MODULE,
380         MONO_CUSTOM_ATTR_PERMISSION,
381         MONO_CUSTOM_ATTR_PROPERTY,
382         MONO_CUSTOM_ATTR_EVENT,
383         MONO_CUSTOM_ATTR_SIGNATURE,
384         MONO_CUSTOM_ATTR_MODULEREF,
385         MONO_CUSTOM_ATTR_TYPESPEC,
386         MONO_CUSTOM_ATTR_ASSEMBLY,
387         MONO_CUSTOM_ATTR_ASSEMBLYREF,
388         MONO_CUSTOM_ATTR_FILE,
389         MONO_CUSTOM_ATTR_EXP_TYPE,
390         MONO_CUSTOM_ATTR_MANIFEST,
391         MONO_CUSTOM_ATTR_GENERICPAR,
392         MONO_CUSTOM_ATTR_BITS = 5,
393         MONO_CUSTOM_ATTR_MASK = 0x1F
394 };
395
396 enum {
397         MONO_HAS_FIELD_MARSHAL_FIELDSREF,
398         MONO_HAS_FIELD_MARSHAL_PARAMDEF,
399         MONO_HAS_FIELD_MARSHAL_BITS = 1,
400         MONO_HAS_FIELD_MARSHAL_MASK = 1
401 };
402
403 enum {
404         MONO_HAS_DECL_SECURITY_TYPEDEF,
405         MONO_HAS_DECL_SECURITY_METHODDEF,
406         MONO_HAS_DECL_SECURITY_ASSEMBLY,
407         MONO_HAS_DECL_SECURITY_BITS = 2,
408         MONO_HAS_DECL_SECURITY_MASK = 3
409 };
410
411 enum {
412         MONO_MEMBERREF_PARENT_TYPEDEF, /* not used */
413         MONO_MEMBERREF_PARENT_TYPEREF,
414         MONO_MEMBERREF_PARENT_MODULEREF,
415         MONO_MEMBERREF_PARENT_METHODDEF,
416         MONO_MEMBERREF_PARENT_TYPESPEC,
417         MONO_MEMBERREF_PARENT_BITS = 3,
418         MONO_MEMBERREF_PARENT_MASK = 7
419 };
420
421 enum {
422         MONO_HAS_SEMANTICS_EVENT,
423         MONO_HAS_SEMANTICS_PROPERTY,
424         MONO_HAS_SEMANTICS_BITS = 1,
425         MONO_HAS_SEMANTICS_MASK = 1
426 };
427
428 enum {
429         MONO_METHODDEFORREF_METHODDEF,
430         MONO_METHODDEFORREF_METHODREF,
431         MONO_METHODDEFORREF_BITS = 1,
432         MONO_METHODDEFORREF_MASK = 1
433 };
434
435 enum {
436         MONO_MEMBERFORWD_FIELDDEF,
437         MONO_MEMBERFORWD_METHODDEF,
438         MONO_MEMBERFORWD_BITS = 1,
439         MONO_MEMBERFORWD_MASK = 1
440 };
441
442 enum {
443         MONO_IMPLEMENTATION_FILE,
444         MONO_IMPLEMENTATION_ASSEMBLYREF,
445         MONO_IMPLEMENTATION_EXP_TYPE,
446         MONO_IMPLEMENTATION_BITS = 2,
447         MONO_IMPLEMENTATION_MASK = 3
448 };
449
450 enum {
451         MONO_CUSTOM_ATTR_TYPE_TYPEREF, /* not used */
452         MONO_CUSTOM_ATTR_TYPE_TYPEDEF, /* not used */
453         MONO_CUSTOM_ATTR_TYPE_METHODDEF,
454         MONO_CUSTOM_ATTR_TYPE_MEMBERREF,
455         MONO_CUSTOM_ATTR_TYPE_STRING, /* not used */
456         MONO_CUSTOM_ATTR_TYPE_BITS = 3,
457         MONO_CUSTOM_ATTR_TYPE_MASK = 7
458 };
459
460 enum {
461         MONO_RESOLUTION_SCOPE_MODULE,
462         MONO_RESOLUTION_SCOPE_MODULEREF,
463         MONO_RESOLUTION_SCOPE_ASSEMBLYREF,
464         MONO_RESOLUTION_SCOPE_TYPEREF,
465         MONO_RESOLUTION_SCOPE_BITS = 2,
466         MONO_RESOLUTION_SCOPE_MASK = 3
467 };
468
469 /* Kept for compatibility since this is a public header file */
470 enum {
471         MONO_RESOLTION_SCOPE_MODULE,
472         MONO_RESOLTION_SCOPE_MODULEREF,
473         MONO_RESOLTION_SCOPE_ASSEMBLYREF,
474         MONO_RESOLTION_SCOPE_TYPEREF,
475         MONO_RESOLTION_SCOPE_BITS = 2,
476         MONO_RESOLTION_SCOPE_MASK = 3
477 };
478
479 enum {
480         MONO_TYPEORMETHOD_TYPE,
481         MONO_TYPEORMETHOD_METHOD,
482         MONO_TYPEORMETHOD_BITS = 1,
483         MONO_TYPEORMETHOD_MASK = 1
484 };
485
486 #endif /* __MONO_METADATA_ROW_INDEXES_H__ */
487
488