TerraForge3D  2.3.1
3D Terrain And Landscape Generator

◆ contains()

template<typename BasicJsonType >
bool nlohmann::json_pointer< BasicJsonType >::contains ( const BasicJsonType *  ptr) const
inlineprivate
Exceptions
parse_error.106if an array index begins with '0'
parse_error.109if an array index was not a number

Definition at line 13245 of file json.hpp.

13246 {
13247 for (const auto &reference_token : reference_tokens)
13248 {
13249 switch (ptr->type())
13250 {
13252 {
13253 if (!ptr->contains(reference_token))
13254 {
13255 // we did not find the key in the object
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 // "-" always fails the range check
13268 return false;
13269 }
13270
13271 if (JSON_HEDLEY_UNLIKELY(reference_token.size() == 1 && !("0" <= reference_token && reference_token <= "9")))
13272 {
13273 // invalid char
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 // first char should be between '1' and '9'
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 // other char should be between '0' and '9'
13290 return false;
13291 }
13292 }
13293 }
13294
13295 const auto idx = array_index(reference_token);
13296
13297 if (idx >= ptr->size())
13298 {
13299 // index out of range
13300 return false;
13301 }
13302
13303 ptr = &ptr->operator[](idx);
13304 break;
13305 }
13306
13315 default:
13316 {
13317 // we do not expect primitive values if there is still a
13318 // reference token to process
13319 return false;
13320 }
13321 }
13322 }
13323
13324 // no reference token left means we found a primitive value
13325 return true;
13326 }
static BasicJsonType::size_type array_index(const std::string &s)
Definition: json.hpp:12878
@ 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)