MCPcopy Create free account
hub / github.com/Samsung/UTopia / readValue

Method readValue

external/jsoncpp/jsoncpp.cpp:379–454  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

377}
378
379bool Reader::readValue() {
380 // readValue() may call itself only if it calls readObject() or ReadArray().
381 // These methods execute nodes_.push() just before and nodes_.pop)() just
382 // after calling readValue(). parse() executes one nodes_.push(), so > instead
383 // of >=.
384 if (nodes_.size() > stackLimit_g)
385 throwRuntimeError("Exceeded stackLimit in readValue().");
386
387 Token token;
388 skipCommentTokens(token);
389 bool successful = true;
390
391 if (collectComments_ && !commentsBefore_.empty()) {
392 currentValue().setComment(commentsBefore_, commentBefore);
393 commentsBefore_.clear();
394 }
395
396 switch (token.type_) {
397 case tokenObjectBegin:
398 successful = readObject(token);
399 currentValue().setOffsetLimit(current_ - begin_);
400 break;
401 case tokenArrayBegin:
402 successful = readArray(token);
403 currentValue().setOffsetLimit(current_ - begin_);
404 break;
405 case tokenNumber:
406 successful = decodeNumber(token);
407 break;
408 case tokenString:
409 successful = decodeString(token);
410 break;
411 case tokenTrue: {
412 Value v(true);
413 currentValue().swapPayload(v);
414 currentValue().setOffsetStart(token.start_ - begin_);
415 currentValue().setOffsetLimit(token.end_ - begin_);
416 } break;
417 case tokenFalse: {
418 Value v(false);
419 currentValue().swapPayload(v);
420 currentValue().setOffsetStart(token.start_ - begin_);
421 currentValue().setOffsetLimit(token.end_ - begin_);
422 } break;
423 case tokenNull: {
424 Value v;
425 currentValue().swapPayload(v);
426 currentValue().setOffsetStart(token.start_ - begin_);
427 currentValue().setOffsetLimit(token.end_ - begin_);
428 } break;
429 case tokenArraySeparator:
430 case tokenObjectEnd:
431 case tokenArrayEnd:
432 if (features_.allowDroppedNullPlaceholders_) {
433 // "Un-read" the current token and mark the current value as a null
434 // token.
435 current_--;
436 Value v;

Callers

nothing calls this directly

Calls 8

throwRuntimeErrorFunction · 0.85
sizeMethod · 0.80
emptyMethod · 0.80
setCommentMethod · 0.80
setOffsetLimitMethod · 0.80
swapPayloadMethod · 0.80
setOffsetStartMethod · 0.80
clearMethod · 0.45

Tested by

no test coverage detected