1 /** 2 * \file 3 * Definitions used to pull information out of the Blob 4 * 5 */ 6 #ifndef _MONO_METADATA_BLOB_H_ 7 #define _MONO_METADATA_BLOB_H_ 8 9 /* 10 * Encoding for type signatures used in the Metadata 11 */ 12 typedef enum { 13 MONO_TYPE_END = 0x00, /* End of List */ 14 MONO_TYPE_VOID = 0x01, 15 MONO_TYPE_BOOLEAN = 0x02, 16 MONO_TYPE_CHAR = 0x03, 17 MONO_TYPE_I1 = 0x04, 18 MONO_TYPE_U1 = 0x05, 19 MONO_TYPE_I2 = 0x06, 20 MONO_TYPE_U2 = 0x07, 21 MONO_TYPE_I4 = 0x08, 22 MONO_TYPE_U4 = 0x09, 23 MONO_TYPE_I8 = 0x0a, 24 MONO_TYPE_U8 = 0x0b, 25 MONO_TYPE_R4 = 0x0c, 26 MONO_TYPE_R8 = 0x0d, 27 MONO_TYPE_STRING = 0x0e, 28 MONO_TYPE_PTR = 0x0f, /* arg: <type> token */ 29 MONO_TYPE_BYREF = 0x10, /* arg: <type> token */ 30 MONO_TYPE_VALUETYPE = 0x11, /* arg: <type> token */ 31 MONO_TYPE_CLASS = 0x12, /* arg: <type> token */ 32 MONO_TYPE_VAR = 0x13, /* number */ 33 MONO_TYPE_ARRAY = 0x14, /* type, rank, boundsCount, bound1, loCount, lo1 */ 34 MONO_TYPE_GENERICINST= 0x15, /* <type> <type-arg-count> <type-1> \x{2026} <type-n> */ 35 MONO_TYPE_TYPEDBYREF = 0x16, 36 MONO_TYPE_I = 0x18, 37 MONO_TYPE_U = 0x19, 38 MONO_TYPE_FNPTR = 0x1b, /* arg: full method signature */ 39 MONO_TYPE_OBJECT = 0x1c, 40 MONO_TYPE_SZARRAY = 0x1d, /* 0-based one-dim-array */ 41 MONO_TYPE_MVAR = 0x1e, /* number */ 42 MONO_TYPE_CMOD_REQD = 0x1f, /* arg: typedef or typeref token */ 43 MONO_TYPE_CMOD_OPT = 0x20, /* optional arg: typedef or typref token */ 44 MONO_TYPE_INTERNAL = 0x21, /* CLR internal type */ 45 46 MONO_TYPE_MODIFIER = 0x40, /* Or with the following types */ 47 MONO_TYPE_SENTINEL = 0x41, /* Sentinel for varargs method signature */ 48 MONO_TYPE_PINNED = 0x45, /* Local var that points to pinned object */ 49 50 MONO_TYPE_ENUM = 0x55 /* an enumeration */ 51 } MonoTypeEnum; 52 53 typedef enum { 54 MONO_TABLE_MODULE, 55 MONO_TABLE_TYPEREF, 56 MONO_TABLE_TYPEDEF, 57 MONO_TABLE_FIELD_POINTER, 58 MONO_TABLE_FIELD, 59 MONO_TABLE_METHOD_POINTER, 60 MONO_TABLE_METHOD, 61 MONO_TABLE_PARAM_POINTER, 62 MONO_TABLE_PARAM, 63 MONO_TABLE_INTERFACEIMPL, 64 MONO_TABLE_MEMBERREF, /* 0xa */ 65 MONO_TABLE_CONSTANT, 66 MONO_TABLE_CUSTOMATTRIBUTE, 67 MONO_TABLE_FIELDMARSHAL, 68 MONO_TABLE_DECLSECURITY, 69 MONO_TABLE_CLASSLAYOUT, 70 MONO_TABLE_FIELDLAYOUT, /* 0x10 */ 71 MONO_TABLE_STANDALONESIG, 72 MONO_TABLE_EVENTMAP, 73 MONO_TABLE_EVENT_POINTER, 74 MONO_TABLE_EVENT, 75 MONO_TABLE_PROPERTYMAP, 76 MONO_TABLE_PROPERTY_POINTER, 77 MONO_TABLE_PROPERTY, 78 MONO_TABLE_METHODSEMANTICS, 79 MONO_TABLE_METHODIMPL, 80 MONO_TABLE_MODULEREF, /* 0x1a */ 81 MONO_TABLE_TYPESPEC, 82 MONO_TABLE_IMPLMAP, 83 MONO_TABLE_FIELDRVA, 84 MONO_TABLE_UNUSED6, 85 MONO_TABLE_UNUSED7, 86 MONO_TABLE_ASSEMBLY, /* 0x20 */ 87 MONO_TABLE_ASSEMBLYPROCESSOR, 88 MONO_TABLE_ASSEMBLYOS, 89 MONO_TABLE_ASSEMBLYREF, 90 MONO_TABLE_ASSEMBLYREFPROCESSOR, 91 MONO_TABLE_ASSEMBLYREFOS, 92 MONO_TABLE_FILE, 93 MONO_TABLE_EXPORTEDTYPE, 94 MONO_TABLE_MANIFESTRESOURCE, 95 MONO_TABLE_NESTEDCLASS, 96 MONO_TABLE_GENERICPARAM, /* 0x2a */ 97 MONO_TABLE_METHODSPEC, 98 MONO_TABLE_GENERICPARAMCONSTRAINT, 99 MONO_TABLE_UNUSED8, 100 MONO_TABLE_UNUSED9, 101 MONO_TABLE_UNUSED10, 102 /* Portable PDB tables */ 103 MONO_TABLE_DOCUMENT, /* 0x30 */ 104 MONO_TABLE_METHODBODY, 105 MONO_TABLE_LOCALSCOPE, 106 MONO_TABLE_LOCALVARIABLE, 107 MONO_TABLE_LOCALCONSTANT, 108 MONO_TABLE_IMPORTSCOPE, 109 MONO_TABLE_STATEMACHINEMETHOD, 110 MONO_TABLE_CUSTOMDEBUGINFORMATION 111 112 #define MONO_TABLE_LAST MONO_TABLE_CUSTOMDEBUGINFORMATION 113 #define MONO_TABLE_NUM (MONO_TABLE_LAST + 1) 114 115 } MonoMetaTableEnum; 116 117 #endif 118 119