qdb_request::slice eatAndConvertBuffer(void) { auto buf = eatObject(); qdb_request::slice res; if (buf.second) { res.begin = node::Buffer::Data(buf.first); res.size = node::Buffer::Length(buf.first); } else { res.begin = nullptr; res.size = 0; } return res; }
static Value eatValue(std::istream& stream) { ltrim(stream); char token = stream.get(); if (token == '{') return eatObject(stream); if (token == '[') return eatArray(stream); if ((token >= '0' && token <= '9') || token == '.' || token == '-') return eatNumeric(stream, token); if (token == '"') return eatString(stream); if (token == 't' || token == 'f') return eatBool(stream); if (token == 'n') return eatNull(stream); if (token == '/') { eatComment(stream); return eatValue(stream); } throw "Unable to parse json"; };