13198 {
13199 for (const auto &reference_token : reference_tokens)
13200 {
13201 switch (ptr->type())
13202 {
13204 {
13205
13206 ptr = &ptr->at(reference_token);
13207 break;
13208 }
13209
13211 {
13212 if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
13213 {
13214
13215 JSON_THROW(detail::out_of_range::create(402,
13216 "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
13217 ") is out of range", *ptr));
13218 }
13219
13220
13222 break;
13223 }
13224
13233 default:
13234 JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'", *ptr));
13235 }
13236 }
13237
13238 return *ptr;
13239 }
static BasicJsonType::size_type array_index(const std::string &s)
@ number_integer
number value (signed integer)
@ discarded
discarded by the parser callback function
@ binary
binary array (ordered collection of bytes)
@ object
object (unordered set of name/value pairs)
@ number_float
number value (floating-point)
@ number_unsigned
number value (unsigned integer)
@ array
array (ordered collection of values)