2 * Copyright 2008 James Hawkins
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef __WINE_CORHDR_H
20 #define __WINE_CORHDR_H
22 typedef enum CorTokenType
24 mdtModule
= 0x00000000,
25 mdtTypeRef
= 0x01000000,
26 mdtTypeDef
= 0x02000000,
27 mdtFieldDef
= 0x04000000,
28 mdtMethodDef
= 0x06000000,
29 mdtParamDef
= 0x08000000,
30 mdtInterfaceImpl
= 0x09000000,
31 mdtMemberRef
= 0x0a000000,
32 mdtCustomAttribute
= 0x0c000000,
33 mdtPermission
= 0x0e000000,
34 mdtSignature
= 0x11000000,
35 mdtEvent
= 0x14000000,
36 mdtProperty
= 0x17000000,
37 mdtModuleRef
= 0x1a000000,
38 mdtTypeSpec
= 0x1b000000,
39 mdtAssembly
= 0x20000000,
40 mdtAssemblyRef
= 0x23000000,
42 mdtExportedType
= 0x27000000,
43 mdtManifestResource
= 0x28000000,
44 mdtGenericParam
= 0x2a000000,
45 mdtMethodSpec
= 0x2b000000,
46 mdtGenericParamConstraint
= 0x2c000000,
47 mdtString
= 0x70000000,
49 mdtBaseType
= 0x72000000,
52 typedef enum CorElementType
54 ELEMENT_TYPE_END
= 0x00,
55 ELEMENT_TYPE_VOID
= 0x01,
56 ELEMENT_TYPE_BOOLEAN
= 0x02,
57 ELEMENT_TYPE_CHAR
= 0x03,
58 ELEMENT_TYPE_I1
= 0x04,
59 ELEMENT_TYPE_U1
= 0x05,
60 ELEMENT_TYPE_I2
= 0x06,
61 ELEMENT_TYPE_U2
= 0x07,
62 ELEMENT_TYPE_I4
= 0x08,
63 ELEMENT_TYPE_U4
= 0x09,
64 ELEMENT_TYPE_I8
= 0x0a,
65 ELEMENT_TYPE_U8
= 0x0b,
66 ELEMENT_TYPE_R4
= 0x0c,
67 ELEMENT_TYPE_R8
= 0x0d,
68 ELEMENT_TYPE_STRING
= 0x0e,
69 ELEMENT_TYPE_PTR
= 0x0f,
70 ELEMENT_TYPE_BYREF
= 0x10,
71 ELEMENT_TYPE_VALUETYPE
= 0x11,
72 ELEMENT_TYPE_CLASS
= 0x12,
73 ELEMENT_TYPE_VAR
= 0x13,
74 ELEMENT_TYPE_ARRAY
= 0x14,
75 ELEMENT_TYPE_GENERICINST
= 0x15,
76 ELEMENT_TYPE_TYPEDBYREF
= 0x16,
77 ELEMENT_TYPE_I
= 0x18,
78 ELEMENT_TYPE_U
= 0x19,
79 ELEMENT_TYPE_FNPTR
= 0x1b,
80 ELEMENT_TYPE_OBJECT
= 0x1c,
81 ELEMENT_TYPE_SZARRAY
= 0x1d,
82 ELEMENT_TYPE_MVAR
= 0x1e,
83 ELEMENT_TYPE_CMOD_REQD
= 0x1f,
84 ELEMENT_TYPE_CMOD_OPT
= 0x20,
85 ELEMENT_TYPE_INTERNAL
= 0x21,
86 ELEMENT_TYPE_MAX
= 0x22,
87 ELEMENT_TYPE_MODIFIER
= 0x40,
88 ELEMENT_TYPE_SENTINEL
= 0x01 | ELEMENT_TYPE_MODIFIER
,
89 ELEMENT_TYPE_PINNED
= 0x05 | ELEMENT_TYPE_MODIFIER
,
90 ELEMENT_TYPE_R4_HFA
= 0x06 | ELEMENT_TYPE_MODIFIER
,
91 ELEMENT_TYPE_R8_HFA
= 0x07 | ELEMENT_TYPE_MODIFIER
,
95 #define RidToToken(rid,tktype) ((rid) |= (tktype))
96 #define TokenFromRid(rid,tktype) ((rid) | (tktype))
97 #define RidFromToken(tk) ((RID)((tk) & 0x00ffffff))
98 #define TypeFromToken(tk) ((ULONG32)((tk) & 0xff000000))
99 #define IsNilToken(tk) ((RidFromToken(tk)) == 0)
101 typedef LPVOID mdScope
;
102 typedef ULONG32 mdToken
;
104 typedef mdToken mdModule
;
105 typedef mdToken mdTypeRef
;
106 typedef mdToken mdTypeDef
;
107 typedef mdToken mdFieldDef
;
108 typedef mdToken mdMethodDef
;
109 typedef mdToken mdParamDef
;
110 typedef mdToken mdInterfaceImpl
;
111 typedef mdToken mdMemberRef
;
112 typedef mdToken mdCustomAttribute
;
113 typedef mdToken mdPermission
;
114 typedef mdToken mdSignature
;
115 typedef mdToken mdEvent
;
116 typedef mdToken mdProperty
;
117 typedef mdToken mdModuleRef
;
118 typedef mdToken mdAssembly
;
119 typedef mdToken mdAssemblyRef
;
120 typedef mdToken mdFile
;
121 typedef mdToken mdExportedType
;
122 typedef mdToken mdManifestResource
;
123 typedef mdToken mdTypeSpec
;
124 typedef mdToken mdGenericParam
;
125 typedef mdToken mdMethodSpec
;
126 typedef mdToken mdGenericParamConstraint
;
127 typedef mdToken mdString
;
128 typedef mdToken mdCPToken
;
130 #endif /* __WINE_CORHDR_H */