mirror of
https://github.com/simdjson/simdjson
synced 2026-06-08 17:27:07 +00:00
Accept large unsigned integers (#295)
* handle uint64 value in JSON * Add integer_tests * Add get_unsigned_integer() on ParsedJson::BasicIterator * Write 'u' to tape when the value seems unsigned * Add to handle 'u' element * Brush up integer_tests.cpp * Append tests/integer_tests in .gitignore * Add comments to is_integer and is_unsigned_integer
This commit is contained in:
@@ -176,6 +176,14 @@ bool ParsedJson::print_json(std::ostream &os) {
|
||||
}
|
||||
os << static_cast<int64_t>(tape[++tape_idx]);
|
||||
break;
|
||||
case 'u':
|
||||
if (tape_idx + 1 >= how_many) {
|
||||
delete[] in_object;
|
||||
delete[] in_object_idx;
|
||||
return false;
|
||||
}
|
||||
os << tape[++tape_idx];
|
||||
break;
|
||||
case 'd': // we have a double
|
||||
if (tape_idx + 1 >= how_many) {
|
||||
delete[] in_object;
|
||||
@@ -273,6 +281,12 @@ bool ParsedJson::dump_raw_tape(std::ostream &os) {
|
||||
}
|
||||
os << "integer " << static_cast<int64_t>(tape[++tape_idx]) << "\n";
|
||||
break;
|
||||
case 'u': // we have a long uint
|
||||
if (tape_idx + 1 >= how_many) {
|
||||
return false;
|
||||
}
|
||||
os << "unsigned integer " << tape[++tape_idx] << "\n";
|
||||
break;
|
||||
case 'd': // we have a double
|
||||
os << "float ";
|
||||
if (tape_idx + 1 >= how_many) {
|
||||
|
||||
Reference in New Issue
Block a user