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);
}