MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / putString

Method putString

source/core/StarJsonParser.hpp:618–685  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

616 }
617
618 void putString(char32_t const* s, size_t len) {
619 startValue();
620
621 write('"');
622 char32_t c = *s;
623 while (len > 0) {
624 if (!isPrintable(c)) {
625 switch (c) {
626 case '"':
627 write('\\');
628 write('"');
629 break;
630 case '\\':
631 write('\\');
632 write('\\');
633 break;
634 case '\b':
635 write('\\');
636 write('b');
637 break;
638 case '\f':
639 write('\\');
640 write('f');
641 break;
642 case '\n':
643 write('\\');
644 write('n');
645 break;
646 case '\r':
647 write('\\');
648 write('r');
649 break;
650 case '\t':
651 write('\\');
652 write('t');
653 break;
654 default:
655 auto hex = hexStringFromUtf32(c);
656 if (hex.size() == 4) {
657 write('\\');
658 write('u');
659 for (auto c : hex) {
660 write(c);
661 }
662 } else if (hex.size() == 8) {
663 write('\\');
664 write('u');
665 for (auto c : hex.substr(0, 4)) {
666 write(c);
667 }
668 write('\\');
669 write('u');
670 for (auto c : hex.substr(4)) {
671 write(c);
672 }
673 } else {
674 throw UnicodeException("Internal Error: Received invalid unicode hex from hexStringFromUtf32.");
675 }

Callers 2

sequenceMethod · 0.45
stringMethod · 0.45

Calls 4

writeFunction · 0.85
hexStringFromUtf32Function · 0.85
sizeMethod · 0.45
substrMethod · 0.45

Tested by

no test coverage detected