Method header parsing
[mono.git] / mono / metadata / methodattr.h
1 #ifndef _MONO_METADATA_METHODATTR_H_
2 #define _MONO_METADATA_METHODATTR_H_
3
4 /*
5  * Method Attributes (22.1.9)
6  */
7
8 #define METHOD_IMPL_ATTRIBUTE_CODE_TYPE_MASK       0x0003
9 #define METHOD_IMPL_ATTRIBUTE_IL                   0x0000
10 #define METHOD_IMPL_ATTRIBUTE_NATIVE               0x0001
11 #define METHOD_IMPL_ATTRIBUTE_OPTIL                0x0002
12 #define METHOD_IMPL_ATTRIBUTE_RUNTIME              0x0003
13
14 #define METHOD_IMPL_ATTRIBUTE_MANAGED_MASK         0x0004
15 #define METHOD_IMPL_ATTRIBUTE_UNMANAGED            0x0004
16 #define METHOD_IMPL_ATTRIBUTE_MANAGED              0x0000
17
18 #define METHOD_IMPL_ATTRIBUTE_FORWARD_REF          0x0010
19 #define METHOD_IMPL_ATTRIBUTE_PRESERVE_SIG         0x0080
20 #define METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL        0x1000
21 #define METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED         0x0020
22 #define METHOD_IMPL_ATTRIBUTE_NOINLINING           0x0008
23 #define METHOD_IMPL_ATTRIBUTE_MAX_METHOD_IMPL_VAL  0xffff
24
25 #define METHOD_ATTRIBUTE_MEMBER_ACCESS_MASK        0x0007
26 #define METHOD_ATTRIBUTE_COMPILER_CONTROLLED       0x0000
27 #define METHOD_ATTRIBUTE_PRIVATE                   0x0001
28 #define METHOD_ATTRIBUTE_FAM_AND_ASSEM             0x0002
29 #define METHOD_ATTRIBUTE_ASSEM                     0x0003
30 #define METHOD_ATTRIBUTE_FAMILY                    0x0004
31 #define METHOD_ATTRIBUTE_FAM_OR_ASSEM              0x0005
32 #define METHOD_ATTRIBUTE_PUBLIC                    0x0006
33
34 #define METHOD_ATTRIBUTE_STATIC                    0x0010
35 #define METHOD_ATTRIBUTE_FINAL                     0x0020
36 #define METHOD_ATTRIBUTE_VIRTUAL                   0x0040
37 #define METHOD_ATTRIBUTE_HIDE_BY_SIG               0x0080
38
39 #define METHOD_ATTRIBUTE_VTABLE_LAYOUT_MASK        0x0100
40 #define METHOD_ATTRIBUTE_REUSE_SLOT                0x0000
41 #define METHOD_ATTRIBUTE_NEW_SLOT                  0x0100
42
43 #define METHOD_ATTRIBUTE_ABSTRACT                  0x0400
44 #define METHOD_ATTRIBUTE_SPECIAL_NAME              0x0800
45
46 #define METHOD_ATTRIBUTE_PINVOKE_IMPL              0x2000
47 #define METHOD_ATTRIBUTE_UNMANAGED_EXPORT          0x0008
48
49 /*
50  * For runtime use only
51  */
52 #define METHOD_ATTRIBUTE_RESERVED_MASK             0xd000
53 #define METHOD_ATTRIBUTE_RT_SPECIAL_NAME           0x1000
54 #define METHOD_ATTRIBUTE_HAS_SECURITY              0x4000
55 #define METHOD_ATTRIBUTE_REQUIRE_SEC_OBJECT        0x8000
56
57 #endif