Definition at line 676 of file json.cpp.hpp.
676 {
679
680 for (
size_t i = 0; i <
span.
size(); i++) {
682 char next =
span[i + 1];
683 switch (next) {
684 case '"':
result +=
'"'; i++;
break;
685 case '\\':
result +=
'\\'; i++;
break;
686 case '/':
result +=
'/'; i++;
break;
687 case 'b':
result +=
'\b'; i++;
break;
688 case 'f':
result +=
'\f'; i++;
break;
689 case 'n':
result +=
'\n'; i++;
break;
690 case 'r':
result +=
'\r'; i++;
break;
691 case 't':
result +=
'\t'; i++;
break;
692 case 'u': {
694 if (cp < 0) {
696 break;
697 }
698 size_t consumed = 5;
699
700 if (cp >= 0xD800 && cp <= 0xDBFF && i + 11 <
span.
size() &&
701 span[i + 6] ==
'\\' &&
span[i + 7] ==
'u') {
703 if (lo >= 0xDC00 && lo <= 0xDFFF) {
704 cp = 0x10000 + ((cp - 0xD800) << 10) + (lo - 0xDC00);
705 consumed = 11;
706 }
707 }
708
709 if (cp >= 0xD800 && cp <= 0xDFFF) {
710 cp = 0xFFFD;
711 }
713 i += consumed;
714 break;
715 }
716 default:
result += span[i];
break;
717 }
718 } else {
720 }
721 }
722
724}
constexpr fl::size size() const FL_NO_EXCEPT
long read_hex4(const fl::span< const char > &span, size_t pos) FL_NO_EXCEPT
void append_utf8(fl::string &out, unsigned long cp) FL_NO_EXCEPT
expected< T, E > result
Alias for expected (Rust-style naming)
References append_utf8(), fl::FL_NO_EXCEPT, read_hex4(), fl::span< T, Extent >::size(), and unescape_string().
Referenced by fl::anonymous_namespace{json.cpp.hpp}::JsonBuilder::on_token(), and unescape_string().