MCPcopy Create free account
hub / github.com/cruppstahl/upscaledb / parse_parse_buffer

Function parse_parse_buffer

3rdparty/json/JSON_parser.c:494–541  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

492
493
494static int parse_parse_buffer(JSON_parser jc)
495{
496 if (jc->callback) {
497 JSON_value value, *arg = NULL;
498
499 if (jc->type != JSON_T_NONE) {
500 assert_is_non_container_type(jc);
501
502 switch(jc->type) {
503 case JSON_T_FLOAT:
504 arg = &value;
505 if (jc->handle_floats_manually) {
506 value.vu.str.value = jc->parse_buffer;
507 value.vu.str.length = jc->parse_buffer_count;
508 } else {
509 if (1 != sscanf(jc->parse_buffer, JSON_PARSER_FLOAT_SSCANF_TOKEN, &value.vu.float_value)) {
510 return false;
511 }
512 }
513 break;
514 case JSON_T_INTEGER:
515 arg = &value;
516 if (jc->handle_ints_manually) {
517 value.vu.str.value = jc->parse_buffer;
518 value.vu.str.length = jc->parse_buffer_count;
519 } else {
520 if (1 != sscanf(jc->parse_buffer, JSON_PARSER_INTEGER_SSCANF_TOKEN, &value.vu.integer_value)) {
521 return false;
522 }
523 }
524 break;
525 case JSON_T_STRING:
526 arg = &value;
527 value.vu.str.value = jc->parse_buffer;
528 value.vu.str.length = jc->parse_buffer_count;
529 break;
530 }
531
532 if (!(*jc->callback)(jc->ctx, jc->type, arg)) {
533 return false;
534 }
535 }
536 }
537
538 parse_buffer_clear(jc);
539
540 return true;
541}
542
543#define IS_HIGH_SURROGATE(uc) (((uc) & 0xFC00) == 0xD800)
544#define IS_LOW_SURROGATE(uc) (((uc) & 0xFC00) == 0xDC00)

Callers 1

JSON_parser_charFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected