MCPcopy Create free account
hub / github.com/ValveSoftware/Proton / readObject

Method readObject

vrclient_x64/jsoncpp.cpp:645–699  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

643}
644
645bool Reader::readObject(Token& tokenStart) {
646 Token tokenName;
647 std::string name;
648 Value init(objectValue);
649 currentValue().swapPayload(init);
650 currentValue().setOffsetStart(tokenStart.start_ - begin_);
651 while (readToken(tokenName)) {
652 bool initialTokenOk = true;
653 while (tokenName.type_ == tokenComment && initialTokenOk)
654 initialTokenOk = readToken(tokenName);
655 if (!initialTokenOk)
656 break;
657 if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object
658 return true;
659 name = "";
660 if (tokenName.type_ == tokenString) {
661 if (!decodeString(tokenName, name))
662 return recoverFromError(tokenObjectEnd);
663 } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) {
664 Value numberName;
665 if (!decodeNumber(tokenName, numberName))
666 return recoverFromError(tokenObjectEnd);
667 name = numberName.asString();
668 } else {
669 break;
670 }
671
672 Token colon;
673 if (!readToken(colon) || colon.type_ != tokenMemberSeparator) {
674 return addErrorAndRecover(
675 "Missing ':' after object member name", colon, tokenObjectEnd);
676 }
677 Value& value = currentValue()[name];
678 nodes_.push(&value);
679 bool ok = readValue();
680 nodes_.pop();
681 if (!ok) // error already set
682 return recoverFromError(tokenObjectEnd);
683
684 Token comma;
685 if (!readToken(comma) ||
686 (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator &&
687 comma.type_ != tokenComment)) {
688 return addErrorAndRecover(
689 "Missing ',' or '}' in object declaration", comma, tokenObjectEnd);
690 }
691 bool finalizeTokenOk = true;
692 while (comma.type_ == tokenComment && finalizeTokenOk)
693 finalizeTokenOk = readToken(comma);
694 if (comma.type_ == tokenObjectEnd)
695 return true;
696 }
697 return addErrorAndRecover(
698 "Missing '}' or object member name", tokenName, tokenObjectEnd);
699}
700
701bool Reader::readArray(Token& tokenStart) {
702 Value init(arrayValue);

Callers

nothing calls this directly

Calls 7

throwRuntimeErrorFunction · 0.85
swapPayloadMethod · 0.80
setOffsetStartMethod · 0.80
emptyMethod · 0.80
asStringMethod · 0.80
lengthMethod · 0.80
isMemberMethod · 0.80

Tested by

no test coverage detected