13246 {
13247 for (const auto &reference_token : reference_tokens)
13248 {
13249 switch (ptr->type())
13250 {
13252 {
13253 if (!ptr->contains(reference_token))
13254 {
13255
13256 return false;
13257 }
13258
13259 ptr = &ptr->operator[](reference_token);
13260 break;
13261 }
13262
13264 {
13265 if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
13266 {
13267
13268 return false;
13269 }
13270
13271 if (JSON_HEDLEY_UNLIKELY(reference_token.size() == 1 && !("0" <= reference_token && reference_token <= "9")))
13272 {
13273
13274 return false;
13275 }
13276
13277 if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1))
13278 {
13279 if (JSON_HEDLEY_UNLIKELY(!('1' <= reference_token[0] && reference_token[0] <= '9')))
13280 {
13281
13282 return false;
13283 }
13284
13285 for (std::size_t i = 1; i < reference_token.size(); i++)
13286 {
13287 if (JSON_HEDLEY_UNLIKELY(!('0' <= reference_token[i] && reference_token[i] <= '9')))
13288 {
13289
13290 return false;
13291 }
13292 }
13293 }
13294
13296
13297 if (idx >= ptr->size())
13298 {
13299
13300 return false;
13301 }
13302
13303 ptr = &ptr->operator[](idx);
13304 break;
13305 }
13306
13315 default:
13316 {
13317
13318
13319 return false;
13320 }
13321 }
13322 }
13323
13324
13325 return true;
13326 }
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)