/** * \file * Definitions used to pull information out of the Blob * */ #ifndef _MONO_METADATA_BLOB_H_ #define _MONO_METADATA_BLOB_H_ /* * Encoding for type signatures used in the Metadata */ typedef enum { MONO_TYPE_END = 0x00, /* End of List */ MONO_TYPE_VOID = 0x01, MONO_TYPE_BOOLEAN = 0x02, MONO_TYPE_CHAR = 0x03, MONO_TYPE_I1 = 0x04, MONO_TYPE_U1 = 0x05, MONO_TYPE_I2 = 0x06, MONO_TYPE_U2 = 0x07, MONO_TYPE_I4 = 0x08, MONO_TYPE_U4 = 0x09, MONO_TYPE_I8 = 0x0a, MONO_TYPE_U8 = 0x0b, MONO_TYPE_R4 = 0x0c, MONO_TYPE_R8 = 0x0d, MONO_TYPE_STRING = 0x0e, MONO_TYPE_PTR = 0x0f, /* arg: token */ MONO_TYPE_BYREF = 0x10, /* arg: token */ MONO_TYPE_VALUETYPE = 0x11, /* arg: token */ MONO_TYPE_CLASS = 0x12, /* arg: token */ MONO_TYPE_VAR = 0x13, /* number */ MONO_TYPE_ARRAY = 0x14, /* type, rank, boundsCount, bound1, loCount, lo1 */ MONO_TYPE_GENERICINST= 0x15, /* \x{2026} */ MONO_TYPE_TYPEDBYREF = 0x16, MONO_TYPE_I = 0x18, MONO_TYPE_U = 0x19, MONO_TYPE_FNPTR = 0x1b, /* arg: full method signature */ MONO_TYPE_OBJECT = 0x1c, MONO_TYPE_SZARRAY = 0x1d, /* 0-based one-dim-array */ MONO_TYPE_MVAR = 0x1e, /* number */ MONO_TYPE_CMOD_REQD = 0x1f, /* arg: typedef or typeref token */ MONO_TYPE_CMOD_OPT = 0x20, /* optional arg: typedef or typref token */ MONO_TYPE_INTERNAL = 0x21, /* CLR internal type */ MONO_TYPE_MODIFIER = 0x40, /* Or with the following types */ MONO_TYPE_SENTINEL = 0x41, /* Sentinel for varargs method signature */ MONO_TYPE_PINNED = 0x45, /* Local var that points to pinned object */ MONO_TYPE_ENUM = 0x55 /* an enumeration */ } MonoTypeEnum; typedef enum { MONO_TABLE_MODULE, MONO_TABLE_TYPEREF, MONO_TABLE_TYPEDEF, MONO_TABLE_FIELD_POINTER, MONO_TABLE_FIELD, MONO_TABLE_METHOD_POINTER, MONO_TABLE_METHOD, MONO_TABLE_PARAM_POINTER, MONO_TABLE_PARAM, MONO_TABLE_INTERFACEIMPL, MONO_TABLE_MEMBERREF, /* 0xa */ MONO_TABLE_CONSTANT, MONO_TABLE_CUSTOMATTRIBUTE, MONO_TABLE_FIELDMARSHAL, MONO_TABLE_DECLSECURITY, MONO_TABLE_CLASSLAYOUT, MONO_TABLE_FIELDLAYOUT, /* 0x10 */ MONO_TABLE_STANDALONESIG, MONO_TABLE_EVENTMAP, MONO_TABLE_EVENT_POINTER, MONO_TABLE_EVENT, MONO_TABLE_PROPERTYMAP, MONO_TABLE_PROPERTY_POINTER, MONO_TABLE_PROPERTY, MONO_TABLE_METHODSEMANTICS, MONO_TABLE_METHODIMPL, MONO_TABLE_MODULEREF, /* 0x1a */ MONO_TABLE_TYPESPEC, MONO_TABLE_IMPLMAP, MONO_TABLE_FIELDRVA, MONO_TABLE_UNUSED6, MONO_TABLE_UNUSED7, MONO_TABLE_ASSEMBLY, /* 0x20 */ MONO_TABLE_ASSEMBLYPROCESSOR, MONO_TABLE_ASSEMBLYOS, MONO_TABLE_ASSEMBLYREF, MONO_TABLE_ASSEMBLYREFPROCESSOR, MONO_TABLE_ASSEMBLYREFOS, MONO_TABLE_FILE, MONO_TABLE_EXPORTEDTYPE, MONO_TABLE_MANIFESTRESOURCE, MONO_TABLE_NESTEDCLASS, MONO_TABLE_GENERICPARAM, /* 0x2a */ MONO_TABLE_METHODSPEC, MONO_TABLE_GENERICPARAMCONSTRAINT, MONO_TABLE_UNUSED8, MONO_TABLE_UNUSED9, MONO_TABLE_UNUSED10, /* Portable PDB tables */ MONO_TABLE_DOCUMENT, /* 0x30 */ MONO_TABLE_METHODBODY, MONO_TABLE_LOCALSCOPE, MONO_TABLE_LOCALVARIABLE, MONO_TABLE_LOCALCONSTANT, MONO_TABLE_IMPORTSCOPE, MONO_TABLE_STATEMACHINEMETHOD, MONO_TABLE_CUSTOMDEBUGINFORMATION #define MONO_TABLE_LAST MONO_TABLE_CUSTOMDEBUGINFORMATION #define MONO_TABLE_NUM (MONO_TABLE_LAST + 1) } MonoMetaTableEnum; #endif