540{
543 if(sz < linear_threshold)
544 {
545 for(size_t i = 0; i < sz; ++i)
546 {
547 Entry const& C4_RESTRICT e = m_entries[i];
548 if(e.tag == tag && e.doc_id == doc_id)
549 {
550 ret.resolved = e.resolved;
551 ret.pos = i;
552 return ret;
553 }
554 else if(e.tag > tag || ((e.tag == tag) && e.doc_id > doc_id))
555 {
556 ret.pos = i;
557 return ret;
558 }
559 }
560 ret.pos = sz;
561 }
562 else
563 {
566 while(count)
567 {
570 RYML_ASSERT_BASIC_CB_(m_entries.m_callbacks, mid < sz);
571 Entry const& C4_RESTRICT e = m_entries[mid];
572 if(e.tag < tag || (e.tag == tag && e.doc_id < doc_id))
573 {
574 first = mid + 1;
575 RYML_ASSERT_BASIC_CB_(m_entries.m_callbacks, count >= halfsz + 1);
576 count -= halfsz + 1;
577 }
578 else
579 {
580 count = halfsz;
581 }
582 }
583 ret.pos = first;
584 if(first < sz)
585 {
586 Entry const& C4_RESTRICT e = m_entries[first];
587 if(e.tag == tag && e.doc_id == doc_id)
588 {
589 ret.resolved = m_entries[first].resolved;
590 }
591 }
592 }
593 return ret;
594}
RYML_ID_TYPE id_type
The type of a node id in the YAML tree; to override the default type, define the macro RYML_ID_TYPE t...