MCPcopy Create free account
hub / github.com/Illumina/hap.py / readObject

Method readObject

external/jsoncpp/jsoncpp.cpp:588–641  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

586}
587
588bool Reader::readObject(Token &tokenStart) {
589 Token tokenName;
590 std::string name;
591 currentValue() = Value(objectValue);
592 currentValue().setOffsetStart(tokenStart.start_ - begin_);
593 while (readToken(tokenName)) {
594 bool initialTokenOk = true;
595 while (tokenName.type_ == tokenComment && initialTokenOk)
596 initialTokenOk = readToken(tokenName);
597 if (!initialTokenOk)
598 break;
599 if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object
600 return true;
601 name = "";
602 if (tokenName.type_ == tokenString) {
603 if (!decodeString(tokenName, name))
604 return recoverFromError(tokenObjectEnd);
605 } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) {
606 Value numberName;
607 if (!decodeNumber(tokenName, numberName))
608 return recoverFromError(tokenObjectEnd);
609 name = numberName.asString();
610 } else {
611 break;
612 }
613
614 Token colon;
615 if (!readToken(colon) || colon.type_ != tokenMemberSeparator) {
616 return addErrorAndRecover(
617 "Missing ':' after object member name", colon, tokenObjectEnd);
618 }
619 Value &value = currentValue()[name];
620 nodes_.push(&value);
621 bool ok = readValue();
622 nodes_.pop();
623 if (!ok) // error already set
624 return recoverFromError(tokenObjectEnd);
625
626 Token comma;
627 if (!readToken(comma) ||
628 (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator &&
629 comma.type_ != tokenComment)) {
630 return addErrorAndRecover(
631 "Missing ',' or '}' in object declaration", comma, tokenObjectEnd);
632 }
633 bool finalizeTokenOk = true;
634 while (comma.type_ == tokenComment && finalizeTokenOk)
635 finalizeTokenOk = readToken(comma);
636 if (comma.type_ == tokenObjectEnd)
637 return true;
638 }
639 return addErrorAndRecover(
640 "Missing '}' or object member name", tokenName, tokenObjectEnd);
641}
642
643bool Reader::readArray(Token &tokenStart) {
644 currentValue() = Value(arrayValue);

Callers

nothing calls this directly

Calls 4

setOffsetStartMethod · 0.80
emptyMethod · 0.80
asStringMethod · 0.80
ValueClass · 0.50

Tested by

no test coverage detected