// // Copyright (c) Microsoft Corporation. All rights reserved. // namespace Bartok.MSIL { using System; // MetaDataBits // // definitions for various bit-level flags, masks // derived from //urtdist/builds/src/2727/Lightning/Src/inc/CorHdr.h public enum ElementTypes: byte { END = 0x0, VOID = 0x1, BOOLEAN = 0x2, CHAR = 0x3, I1 = 0x4, U1 = 0x5, I2 = 0x6, U2 = 0x7, I4 = 0x8, U4 = 0x9, I8 = 0xa, U8 = 0xb, R4 = 0xc, R8 = 0xd, STRING = 0xe, // every type above PTR will be simple type PTR = 0xf, // PTR BYREF = 0x10, // BYREF // Please use VALUETYPE. VALUECLASS is deprecated. VALUETYPE = 0x11, // VALUETYPE CLASS = 0x12, // CLASS VAR = 0x13, // a class type variable VAR ARRAY = 0x14, // MDARRAY ... ... GENERICINST= 0x15, // instantiated type TYPEDBYREF = 0x16, // This is a simple type. I = 0x18, // native integer size U = 0x19, // native unsigned integer size FNPTR = 0x1B, // FNPTR OBJECT = 0x1C, // Shortcut for System.Object SZARRAY = 0x1D, // Shortcut for single dimension zero lower bound array // SZARRAY // This is only for binding MVAR = 0x1E, // a method type variable MVAR CMOD_REQD = 0x1F, // required C modifier : E_T_CMOD_REQD CMOD_OPT = 0x20, // optional C modifier : E_T_CMOD_OPT // This is for signatures generated internally (which will not be persisted in any way). INTERNAL = 0x21, // INTERNAL // Note that this is the max of base type excluding modifiers MAX = 0x22, // first invalid element type MODIFIER = 0x40, SENTINEL = 0x01 | MODIFIER, // sentinel for varargs PINNED = 0x05 | MODIFIER } public enum NativeTypes: byte { END = 0x0, //DEPRECATED VOID = 0x1, //DEPRECATED BOOLEAN = 0x2, // (4 byte boolean value: TRUE = non-zero, FALSE = 0) I1 = 0x3, U1 = 0x4, I2 = 0x5, U2 = 0x6, I4 = 0x7, U4 = 0x8, I8 = 0x9, U8 = 0xa, R4 = 0xb, R8 = 0xc, SYSCHAR = 0xd, //DEPRECATED VARIANT = 0xe, //DEPRECATED CURRENCY = 0xf, PTR = 0x10, //DEPRECATED DECIMAL = 0x11, //DEPRECATED DATE = 0x12, //DEPRECATED BSTR = 0x13, LPSTR = 0x14, LPWSTR = 0x15, LPTSTR = 0x16, FIXEDSYSSTRING = 0x17, OBJECTREF = 0x18, //DEPRECATED IUNKNOWN = 0x19, IDISPATCH = 0x1a, STRUCT = 0x1b, INTF = 0x1c, SAFEARRAY = 0x1d, FIXEDARRAY = 0x1e, INT = 0x1f, UINT = 0x20, //@todo: sync up the spec NESTEDSTRUCT = 0x21, //DEPRECATED (use STRUCT) BYVALSTR = 0x22, ANSIBSTR = 0x23, TBSTR = 0x24, // select BSTR or ANSIBSTR depending on platform VARIANTBOOL = 0x25, // (2-byte boolean value: TRUE = -1, FALSE = 0) FUNC = 0x26, ASANY = 0x28, ARRAY = 0x2a, LPSTRUCT = 0x2b, CUSTOMMARSHALER = 0x2c, // Custom marshaler native type. This must be followed // by a string of the following format: // "Native type name/0Custom marshaler type name/0Optional cookie/0" // Or // "{Native type GUID}/0Custom marshaler type name/0Optional cookie/0" ERROR = 0x2d, // This native type coupled with ELEMENT_TYPE_I4 will map to VT_HRESULT MAX = 0x50 // first invalid element type } public enum VariantTypes { VT_EMPTY = 0, VT_NULL = 1, VT_I2 = 2, VT_I4 = 3, VT_R4 = 4, VT_R8 = 5, VT_CY = 6, VT_DATE = 7, VT_BSTR = 8, VT_DISPATCH = 9, VT_ERROR = 10, VT_BOOL = 11, VT_VARIANT = 12, VT_UNKNOWN = 13, VT_DECIMAL = 14, VT_I1 = 16, VT_UI1 = 17, VT_UI2 = 18, VT_UI4 = 19, VT_I8 = 20, VT_UI8 = 21, VT_INT = 22, VT_UINT = 23, VT_VOID = 24, VT_HRESULT = 25, VT_PTR = 26, VT_SAFEARRAY = 27, VT_CARRAY = 28, VT_USERDEFINED = 29, VT_LPSTR = 30, VT_LPWSTR = 31, VT_RECORD = 36, VT_FILETIME = 64, VT_BLOB = 65, VT_STREAM = 66, VT_STORAGE = 67, VT_STREAMED_OBJECT = 68, VT_STORED_OBJECT = 69, VT_BLOB_OBJECT = 70, VT_CF = 71, VT_CLSID = 72, VT_BSTR_BLOB = 0xfff, VT_VECTOR = 0x1000, VT_ARRAY = 0x2000, VT_BYREF = 0x4000, VT_RESERVED = 0x8000, VT_ILLEGAL = 0xffff, VT_ILLEGALMASKED = 0xfff, VT_TYPEMASK = 0xfff }; public enum SerializationTypes { BOOLEAN = ElementTypes.BOOLEAN, CHAR = ElementTypes.CHAR, I1 = ElementTypes.I1, U1 = ElementTypes.U1, I2 = ElementTypes.I2, U2 = ElementTypes.U2, I4 = ElementTypes.I4, U4 = ElementTypes.U4, I8 = ElementTypes.I8, U8 = ElementTypes.U8, R4 = ElementTypes.R4, R8 = ElementTypes.R8, STRING = ElementTypes.STRING, SZARRAY = ElementTypes.SZARRAY, // Shortcut for single dimension zero lower bound array TYPE = 0x50, TAGGED_OBJECT= 0x51, FIELD = 0x53, PROPERTY = 0x54, ENUM = 0x55 }; }