private unsafe void ReadNumber()

in Microsoft.Shared.Dna.Json/JsonParser.cs [1314:1358]


        private unsafe void ReadNumber(char* payloadPointer)
        {
            int cursor = this.position;
            char c = *(payloadPointer + cursor);
            if (c == JsonConstants.NegativeSign)
            {
                cursor++;
            }
            else if (c == JsonConstants.Zero)
            {
                int hexOffset = cursor + 1;
                if (hexOffset < this.payloadLength)
                {
                    c = *(payloadPointer + hexOffset);
                    if (c == JsonConstants.HexLowercase || c == JsonConstants.HexUppercase)
                    {
                        this.ReadHexNumber(payloadPointer, hexOffset + 1);
                        return;
                    }
                }
            }

            int start = cursor;
            cursor = this.EndOfDigits(payloadPointer, cursor);
            if (start == cursor)
            {
                this.CreateInvalidToken();
                return;
            }

            c = *(payloadPointer + cursor);
            if (c == JsonConstants.DecimalPoint)
            {
                this.ReadFraction(payloadPointer, cursor + 1);
                return;
            }

            if (c == JsonConstants.ExponentLowercase || c == JsonConstants.ExponentUppercase)
            {
                this.ReadExponent(payloadPointer, cursor + 1);
                return;
            }

            this.CreateToken(cursor - this.position, JsonTokenType.Integer);
        }