Lines Matching refs:data

64 char* parse_value(char* data, value& value);
67 value parse(char* data);
303 char* parse_value(char* data, value& value);
304 char* parse_number(char* data, value&);
305 char* parse_string(char* data, value&);
307 inline bool isWhite(char data) in isWhite() argument
309 return ((data == ' ') || (data == '\n') || (data == '\r') || (data == '\t')); in isWhite()
312 inline bool isSign(char data) in isSign() argument
314 return ((data == '+') || (data == '-')); in isSign()
317 inline bool isDigit(char data) in isDigit() argument
319 return ((data >= '0') && (data <= '9')); in isDigit()
322 inline bool isHex(char data) in isHex() argument
324 …return ((data >= '0') && (data <= '9')) || ((data >= 'a') && (data <= 'f')) || ((data >= 'A') && ( in isHex()
327 inline char* trim(char* data) in trim() argument
329 while (*data && isWhite(*data)) { in trim()
330 data++; in trim()
332 return data; in trim()
335 char* parse_object(char* data, value& res) in parse_object() argument
337 data = trim(data); in parse_object()
338 if (*data == '}') { in parse_object()
341 return data + 1; in parse_object()
344 for (; *data != 0;) { in parse_object()
345 if (*data != '"') { in parse_object()
347 *data = 0; in parse_object()
348 return data; in parse_object()
353 data = trim(parse_string(data + 1, key)); in parse_object()
355 if (*data == ':') { in parse_object()
356 data++; in parse_object()
359 *data = 0; in parse_object()
360 return data; in parse_object()
362 data = trim(data); in parse_object()
363 data = trim(parse_value(data, pair.value)); in parse_object()
364 if (*data == '}') { in parse_object()
367 return data + 1; in parse_object()
368 } else if (*data == ',') { in parse_object()
369 data = trim(data + 1); in parse_object()
372 *data = 0; in parse_object()
373 return data; in parse_object()
376 return data; in parse_object()
379 char* parse_array(char* data, value& res) in parse_array() argument
381 data = trim(data); in parse_array()
382 if (*data == ']') { in parse_array()
385 return data + 1; in parse_array()
388 for (; *data != 0;) { in parse_array()
390 data = trim(parse_value(data, tmp)); in parse_array()
392 if (*data == ',') { in parse_array()
393 data = trim(data + 1); in parse_array()
394 } else if (*data == ']') { in parse_array()
396 return data + 1; in parse_array()
399 *data = 0; in parse_array()
400 return data; in parse_array()
403 return data; in parse_array()
407 char* parse_string(char* data, value& res) in parse_string() argument
409 char* start = data; in parse_string()
410 for (; *data != 0; data++) { in parse_string()
411 if (*data == '\\' && data[1]) { in parse_string()
413 … if (data[1] == '\\' || data[1] == '"' || data[1] == '/' || data[1] == 'b' || data[1] == 'f' || in parse_string()
414 data[1] == 'n' || data[1] == 'r' || data[1] == 't') { in parse_string()
415 ++data; in parse_string()
417 } else if (data[1] == 'u') { in parse_string()
418 data += 2; in parse_string()
419 for (char* end = data + 4; data != end; ++data) { in parse_string()
420 if (*data == 0 || !isHex(*data)) { in parse_string()
421 *data = 0; in parse_string()
422 return data; in parse_string()
425 --data; in parse_string()
428 *data = 0; in parse_string()
429 return data; in parse_string()
431 } else if (*data == '"') { in parse_string()
432 res = value(string_t{ start, (size_t)(data - start) }); in parse_string()
433 return data + 1; in parse_string()
434 } else if (static_cast<unsigned char>(*data) < 0x20) { in parse_string()
436 *data = 0; in parse_string()
437 return data; in parse_string()
440 return data; in parse_string()
443 char* parse_number(char* data, value& res) in parse_number() argument
445 char* beg = data; in parse_number()
446 if (*data == '-') { in parse_number()
448 data++; in parse_number()
449 if (!isDigit(*data)) { in parse_number()
450 *data = 0; in parse_number()
451 return data; in parse_number()
457 if (*data == '0') { in parse_number()
458 ++data; in parse_number()
460 if (*data == '.') { in parse_number()
461 ++data; in parse_number()
463 } else if (*data == 'e' || *data == 'E') { in parse_number()
464 ++data; in parse_number()
468 for (; *data != 0; data++) { in parse_number()
469 if (isDigit(*data)) in parse_number()
471 if (*data == '.') { in parse_number()
472 ++data; in parse_number()
474 } else if (*data == 'e' || *data == 'E') { in parse_number()
475 ++data; in parse_number()
484 if (isDigit(*data)) { in parse_number()
485 ++data; in parse_number()
488 *data = 0; in parse_number()
489 return data; in parse_number()
492 for (; *data != 0; data++) { in parse_number()
493 if (isDigit(*data)) in parse_number()
495 if (*data == 'e' || *data == 'E') { in parse_number()
496 ++data; in parse_number()
504 if (*data == '-' || *data == '+') { in parse_number()
505 ++data; in parse_number()
507 if (isDigit(*data)) { in parse_number()
508 ++data; in parse_number()
511 *data = 0; in parse_number()
512 return data; in parse_number()
514 for (; *data != 0; data++) { in parse_number()
515 if (isDigit(*data)) in parse_number()
520 if (data != beg) { in parse_number()
521 char* end = data - 1; in parse_number()
523 return data; in parse_number()
525 *data = 0; in parse_number()
526 return data; in parse_number()
529 char* parse_boolean(char* data, value& res) in parse_boolean() argument
531 if (*data == 't') { in parse_boolean()
532 ++data; in parse_boolean()
535 if (data[i] == 0 || data[i] != rue[i]) { in parse_boolean()
536 *data = 0; in parse_boolean()
537 return data; in parse_boolean()
542 data += sizeof(rue); in parse_boolean()
543 } else if (*data == 'f') { in parse_boolean()
544 ++data; in parse_boolean()
547 if (data[i] == 0 || data[i] != alse[i]) { in parse_boolean()
548 *data = 0; in parse_boolean()
549 return data; in parse_boolean()
553 data += sizeof(alse); in parse_boolean()
556 *data = 0; in parse_boolean()
557 return data; in parse_boolean()
559 return data; in parse_boolean()
562 char* parse_null(char* data, value& res) in parse_null() argument
564 if (*data == 'n') { in parse_null()
565 ++data; in parse_null()
568 if (data[i] == 0 || data[i] != ull[i]) { in parse_null()
569 *data = 0; in parse_null()
570 return data; in parse_null()
574 data += sizeof(ull); in parse_null()
577 *data = 0; in parse_null()
578 return data; in parse_null()
580 return data; in parse_null()
583 char* parse_value(char* data, value& value) in parse_value() argument
585 data = trim(data); in parse_value()
586 if (*data == '{') { in parse_value()
587 data = trim(parse_object(data + 1, value)); in parse_value()
588 } else if (*data == '[') { in parse_value()
589 data = trim(parse_array(data + 1, value)); in parse_value()
590 } else if (*data == '"') { in parse_value()
591 data = trim(parse_string(data + 1, value)); in parse_value()
592 } else if (isSign(*data) || isDigit(*data)) { in parse_value()
593 data = trim(parse_number(data, value)); in parse_value()
594 } else if ((*data == 't') || (*data == 'f')) { in parse_value()
595 data = trim(parse_boolean(data, value)); in parse_value()
596 } else if (*data == 'n') { in parse_value()
597 data = trim(parse_null(data, value)); in parse_value()
600 *data = 0; in parse_value()
601 return data; in parse_value()
603 return data; in parse_value()
627 value parse(char* data) in parse() argument
634 while (*data) { in parse()
635 data = trim(data); in parse()
636 if (*data == '{') { in parse()
641 data = trim(data + 1); in parse()
642 if (*data == '}') { in parse()
643 data = trim(data + 1); in parse()
647 } else if (*data == '"') { in parse()
650 data = trim(parse_string(data + 1, key)); in parse()
652 if (*data != ':') { in parse()
656 data = trim(data + 1); in parse()
665 } else if (*data == '}') { in parse()
675 data = trim(data + 1); in parse()
685 } else if (*data == '[') { in parse()
690 data = trim(data + 1); in parse()
691 if (*data == ']') { in parse()
692 data = trim(data + 1); in parse()
701 } else if (*data == ']') { in parse()
712 data = trim(data + 1); in parse()
722 } else if (*data == ',') { in parse()
726 data = trim(data + 1); in parse()
727 if (*data != '"') { in parse()
733 data = trim(parse_string(data + 1, key)); in parse()
735 if (*data != ':') { in parse()
739 data = trim(data + 1); in parse()
743 data = trim(data + 1); in parse()
749 } else if (*data == '"') { in parse()
751 data = trim(parse_string(data + 1, value)); in parse()
759 } else if (isSign(*data) || isDigit(*data)) { in parse()
761 data = trim(parse_number(data, value)); in parse()
769 } else if ((*data == 't') || (*data == 'f')) { in parse()
771 data = trim(parse_boolean(data, value)); in parse()
779 } else if (*data == 'n') { in parse()
781 data = trim(parse_null(data, value)); in parse()
820 out.append(v.key.data(), v.key.size()); in to_string()
844 out.append(value.string_.data(), value.string_.size()); in to_string()
859 out += std::to_string(value.number_).data(); in to_string()