internal static RhCorElementTypeInfo GetRhCorElementTypeInfo(CorElementType elementType) { //TODO Fix crashes from static array fields RhCorElementTypeInfo[] s_lookupTable = new RhCorElementTypeInfo[] { // index = 0x0 new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = 0 }, // index = 0x1 new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = 0 }, // index = 0x2 = ELEMENT_TYPE_BOOLEAN (W = BOOL) new RhCorElementTypeInfo { _widenMask = 0x0004, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive }, // index = 0x3 = ELEMENT_TYPE_CHAR (W = U2, CHAR, I4, U4, I8, U8, R4, R8) (U2 == Char) new RhCorElementTypeInfo { _widenMask = 0x3f88, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive }, // index = 0x4 = ELEMENT_TYPE_I1 (W = I1, I2, I4, I8, R4, R8) new RhCorElementTypeInfo { _widenMask = 0x3550, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive }, // index = 0x5 = ELEMENT_TYPE_U1 (W = CHAR, U1, I2, U2, I4, U4, I8, U8, R4, R8) new RhCorElementTypeInfo { _widenMask = 0x3FE8, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive }, // index = 0x6 = ELEMENT_TYPE_I2 (W = I2, I4, I8, R4, R8) new RhCorElementTypeInfo { _widenMask = 0x3540, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive }, // index = 0x7 = ELEMENT_TYPE_U2 (W = U2, CHAR, I4, U4, I8, U8, R4, R8) new RhCorElementTypeInfo { _widenMask = 0x3F88, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive }, // index = 0x8 = ELEMENT_TYPE_I4 (W = I4, I8, R4, R8) new RhCorElementTypeInfo { _widenMask = 0x3500, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive }, // index = 0x9 = ELEMENT_TYPE_U4 (W = U4, I8, R4, R8) new RhCorElementTypeInfo { _widenMask = 0x3E00, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive }, // index = 0xa = ELEMENT_TYPE_I8 (W = I8, R4, R8) new RhCorElementTypeInfo { _widenMask = 0x3400, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive }, // index = 0xb = ELEMENT_TYPE_U8 (W = U8, R4, R8) new RhCorElementTypeInfo { _widenMask = 0x3800, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive }, // index = 0xc = ELEMENT_TYPE_R4 (W = R4, R8) new RhCorElementTypeInfo { _widenMask = 0x3000, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive | RhCorElementTypeInfoFlags.IsFloat }, // index = 0xd = ELEMENT_TYPE_R8 (W = R8) new RhCorElementTypeInfo { _widenMask = 0x2000, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive | RhCorElementTypeInfoFlags.IsFloat }, // index = 0xe new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = 0 }, // index = 0xf new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = 0 }, // index = 0x10 new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = 0 }, // index = 0x11 new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = 0 }, // index = 0x12 new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = 0 }, // index = 0x13 new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = 0 }, // index = 0x14 new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = 0 }, // index = 0x15 new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = 0 }, // index = 0x16 new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = 0 }, // index = 0x17 new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = 0 }, // index = 0x18 = ELEMENT_TYPE_I new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive }, // index = 0x19 = ELEMENT_TYPE_U new RhCorElementTypeInfo { _widenMask = 0x0000, _flags = RhCorElementTypeInfoFlags.IsValid | RhCorElementTypeInfoFlags.IsPrimitive }, }; // The _lookupTable array only covers a subset of RhCorElementTypes, so we return a default // info when someone asks for an elementType which does not have an entry in the table. if ((int)elementType > s_lookupTable.Length) { return(default(RhCorElementTypeInfo)); } RhCorElementTypeInfo result = s_lookupTable[(int)elementType]; s_lookupTable.Free(); return(result); }
internal static RhCorElementTypeInfo GetRhCorElementTypeInfo(RuntimeImports.RhCorElementType elementType) { return(RhCorElementTypeInfo.GetRhCorElementTypeInfo(elementType)); }
internal static RhCorElementTypeInfo GetRhCorElementTypeInfo(CorElementType elementType) { return(RhCorElementTypeInfo.GetRhCorElementTypeInfo(elementType)); }