MCPcopy Create free account
hub / github.com/BehaviorTree/BehaviorTree.CPP / contains

Function contains

include/behaviortree_cpp/contrib/json.hpp:14383–14460  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14381 */
14382 template<typename BasicJsonType>
14383 bool contains(const BasicJsonType* ptr) const
14384 {
14385 for (const auto& reference_token : reference_tokens)
14386 {
14387 switch (ptr->type())
14388 {
14389 case detail::value_t::object:
14390 {
14391 if (!ptr->contains(reference_token))
14392 {
14393 // we did not find the key in the object
14394 return false;
14395 }
14396
14397 ptr = &ptr->operator[](reference_token);
14398 break;
14399 }
14400
14401 case detail::value_t::array:
14402 {
14403 if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
14404 {
14405 // "-" always fails the range check
14406 return false;
14407 }
14408 if (JSON_HEDLEY_UNLIKELY(reference_token.size() == 1 && !("0" <= reference_token && reference_token <= "9")))
14409 {
14410 // invalid char
14411 return false;
14412 }
14413 if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1))
14414 {
14415 if (JSON_HEDLEY_UNLIKELY(!('1' <= reference_token[0] && reference_token[0] <= '9')))
14416 {
14417 // first char should be between '1' and '9'
14418 return false;
14419 }
14420 for (std::size_t i = 1; i < reference_token.size(); i++)
14421 {
14422 if (JSON_HEDLEY_UNLIKELY(!('0' <= reference_token[i] && reference_token[i] <= '9')))
14423 {
14424 // other char should be between '0' and '9'
14425 return false;
14426 }
14427 }
14428 }
14429
14430 const auto idx = array_index<BasicJsonType>(reference_token);
14431 if (idx >= ptr->size())
14432 {
14433 // index out of range
14434 return false;
14435 }
14436
14437 ptr = &ptr->operator[](idx);
14438 break;
14439 }
14440

Callers

nothing calls this directly

Calls 5

is_objectFunction · 0.85
operator[]Method · 0.80
typeMethod · 0.45
sizeMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected