Esempio n. 1
0
            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);
            }
Esempio n. 2
0
 internal static RhCorElementTypeInfo GetRhCorElementTypeInfo(RuntimeImports.RhCorElementType elementType)
 {
     return(RhCorElementTypeInfo.GetRhCorElementTypeInfo(elementType));
 }
Esempio n. 3
0
 internal static RhCorElementTypeInfo GetRhCorElementTypeInfo(CorElementType elementType)
 {
     return(RhCorElementTypeInfo.GetRhCorElementTypeInfo(elementType));
 }