Пример #1
0
        public CLRSigTypeArray(ElementType type, CLRSignatureParser parser)
        {
            BasicType = type;

            ContainedType = CLRSigType.Parse(parser, false);

            // ArrayShape (II.23.2.13)
            Rank = parser.ReadCompressedUInt();
            uint numSizes = parser.ReadCompressedUInt();
            if (numSizes > Rank)
                throw new ParseFailedException("Invalid array");

            Sizes = new uint[numSizes];
            for (uint i = 0; i < numSizes; i++)
                Sizes[i] = parser.ReadCompressedUInt();

            uint numLowBounds = parser.ReadCompressedUInt();
            if (numLowBounds > Rank)
                throw new ParseFailedException("Invalid array");

            LowBounds = new int[numLowBounds];
            for (uint i = 0; i < numLowBounds; i++)
                LowBounds[i] = parser.ReadCompressedInt();
        }