MCPcopy Create free account
hub / github.com/altairwei/WizNotePlus / readObject

Method readObject

src/share/jsoncpp/jsoncpp.cpp:680–734  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

678}
679
680bool Reader::readObject(Token& tokenStart) {
681 Token tokenName;
682 JSONCPP_STRING name;
683 Value init(objectValue);
684 currentValue().swapPayload(init);
685 currentValue().setOffsetStart(tokenStart.start_ - begin_);
686 while (readToken(tokenName)) {
687 bool initialTokenOk = true;
688 while (tokenName.type_ == tokenComment && initialTokenOk)
689 initialTokenOk = readToken(tokenName);
690 if (!initialTokenOk)
691 break;
692 if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object
693 return true;
694 name = "";
695 if (tokenName.type_ == tokenString) {
696 if (!decodeString(tokenName, name))
697 return recoverFromError(tokenObjectEnd);
698 } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) {
699 Value numberName;
700 if (!decodeNumber(tokenName, numberName))
701 return recoverFromError(tokenObjectEnd);
702 name = JSONCPP_STRING(numberName.asCString());
703 } else {
704 break;
705 }
706
707 Token colon;
708 if (!readToken(colon) || colon.type_ != tokenMemberSeparator) {
709 return addErrorAndRecover(
710 "Missing ':' after object member name", colon, tokenObjectEnd);
711 }
712 Value& value = currentValue()[name];
713 nodes_.push(&value);
714 bool ok = readValue();
715 nodes_.pop();
716 if (!ok) // error already set
717 return recoverFromError(tokenObjectEnd);
718
719 Token comma;
720 if (!readToken(comma) ||
721 (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator &&
722 comma.type_ != tokenComment)) {
723 return addErrorAndRecover(
724 "Missing ',' or '}' in object declaration", comma, tokenObjectEnd);
725 }
726 bool finalizeTokenOk = true;
727 while (comma.type_ == tokenComment && finalizeTokenOk)
728 finalizeTokenOk = readToken(comma);
729 if (comma.type_ == tokenObjectEnd)
730 return true;
731 }
732 return addErrorAndRecover(
733 "Missing '}' or object member name", tokenName, tokenObjectEnd);
734}
735
736bool Reader::readArray(Token& tokenStart) {
737 Value init(arrayValue);

Callers

nothing calls this directly

Calls 8

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

Tested by

no test coverage detected