13093 {
13094 for (const auto &reference_token : reference_tokens)
13095 {
13096 switch (ptr->type())
13097 {
13099 {
13100
13101 ptr = &ptr->at(reference_token);
13102 break;
13103 }
13104
13106 {
13107 if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
13108 {
13109
13110 JSON_THROW(detail::out_of_range::create(402,
13111 "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
13112 ") is out of range", *ptr));
13113 }
13114
13115
13117 break;
13118 }
13119
13128 default:
13129 JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'", *ptr));
13130 }
13131 }
13132
13133 return *ptr;
13134 }
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)