MCPcopy Create free account
hub / github.com/Illumina/paragraph / readObject

Method readObject

external/jsoncpp/jsoncpp.cpp:676–730  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 9

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

Tested by

no test coverage detected