1 /* 2 * Copyright 2008 James Hawkins 3 * 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. 8 * 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. 13 * 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 17 */ 18 19 #ifndef __WINE_CORHDR_H 20 #define __WINE_CORHDR_H 21 22 typedef enum CorTokenType 23 { 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, 41 mdtFile = 0x26000000, 42 mdtExportedType = 0x27000000, 43 mdtManifestResource = 0x28000000, 44 mdtGenericParam = 0x2a000000, 45 mdtMethodSpec = 0x2b000000, 46 mdtGenericParamConstraint = 0x2c000000, 47 mdtString = 0x70000000, 48 mdtName = 0x71000000, 49 mdtBaseType = 0x72000000, 50 } CorTokenType; 51 52 typedef enum CorElementType 53 { 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, 92 93 } CorElementType; 94 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) 100 101 typedef LPVOID mdScope; 102 typedef ULONG32 mdToken; 103 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; 129 130 #endif /* __WINE_CORHDR_H */ 131