26 return ((
ch >=
'0') && (
ch <=
'9'));
33 unsigned int result = 0;
49 result = 16 * result +
digit;
57 const char *
raw,
const char *end)
150 if (
raw < end && *
raw ==
'.') {
163 if (
raw < end && (*
raw ==
'e' || *
raw ==
'E')) {
167 if (
raw < end && (*
raw ==
'-' || *
raw ==
'+')) {
192 if (
raw >= end || (
unsigned char)*
raw < 0x20)
195 else if (*
raw ==
'\\') {
202 case '"':
writer.push_back(
'\"');
break;
203 case '\\':
writer.push_back(
'\\');
break;
204 case '/':
writer.push_back(
'/');
break;
205 case 'b':
writer.push_back(
'\b');
break;
206 case 'f':
writer.push_back(
'\f');
break;
207 case 'n':
writer.push_back(
'\n');
break;
208 case 'r':
writer.push_back(
'\r');
break;
209 case 't':
writer.push_back(
'\t');
break;
212 unsigned int codepoint;
213 if (
raw + 1 + 4 >= end ||
217 writer.push_back_u(codepoint);
229 else if (*
raw ==
'"') {
235 writer.push_back(
static_cast<unsigned char>(*
raw));
260#define expect(bit) (expectMask & (EXP_##bit))
261#define setExpect(bit) (expectMask |= EXP_##bit)
262#define clearExpect(bit) (expectMask &= ~EXP_##bit)
267 if (!
parsed.read_impl(json)) {
271 *
this = std::move(
parsed);
280 std::vector<UniValue*> stack;
341 stack.push_back(
this);
468 }
while (!stack.empty ());
Filter that generates and validates UTF-8, as well as collates UTF-16 surrogate pairs as specified in...
void push_back(UniValue val)
bool read_impl(std::string_view str_in)
Internal parser: May leave this value in an invalid state on failure.
std::vector< UniValue > values
std::vector< std::string > keys
bool read(std::string_view json)
Parse JSON; set value to null on failure.
enum jtokentype getJsonToken(std::string &tokenVal, unsigned int &consumed, const char *raw, const char *end)
static bool jsonTokenIsValue(enum jtokentype jtt)
static bool json_isspace(int ch)
static bool json_isdigit(int ch)
static constexpr size_t MAX_JSON_DEPTH
enum jtokentype getJsonToken(std::string &tokenVal, unsigned int &consumed, const char *raw, const char *end)
static const char * hatoui(const char *first, const char *last, unsigned int &out)
constexpr auto Ticks(Dur2 d)
Helper to count the seconds of a duration/time_point.