private static bool parseNumber(JSONParser.Context ctx, bool ignoreDecimal) { ctx.sb.Length = 0; if ((int)ctx.src[ctx.pos] == 45) { ctx.sb.Append('-'); ++ctx.pos; } if (!JSONParser.readDigits(ctx)) { throw new JSONParser.InvalidNumberException(ctx); } int length = ctx.sb.Length; if (ctx.pos < ctx.src.Length) { if ((int)ctx.src[ctx.pos] == 46) { ctx.sb.Append('.'); ++ctx.pos; if (!JSONParser.readDigits(ctx)) { throw new JSONParser.InvalidNumberException(ctx); } } if (ctx.pos < ctx.src.Length && ((int)ctx.src[ctx.pos] == 101 || (int)ctx.src[ctx.pos] == 69)) { ctx.sb.Append(ctx.src[ctx.pos]); ++ctx.pos; if (ctx.pos >= ctx.src.Length) { throw new JSONParser.InvalidNumberException(ctx); } if ((int)ctx.src[ctx.pos] == 43 || (int)ctx.src[ctx.pos] == 45) { ctx.sb.Append(ctx.src[ctx.pos]); ++ctx.pos; } else if (!char.IsDigit(ctx.src[ctx.pos])) { throw new JSONParser.InvalidNumberException(ctx); } if (!JSONParser.readDigits(ctx)) { throw new JSONParser.InvalidNumberException(ctx); } } } if (ignoreDecimal) { ctx.sb.Length = length; } return(true); }