538{
541 if(sz < linear_threshold)
542 {
543 for(size_t i = 0; i < sz; ++i)
544 {
545 Entry const& C4_RESTRICT e = m_entries[i];
546 if(e.tag == tag && e.doc_id == doc_id)
547 {
548 ret.resolved = e.resolved;
549 ret.pos = i;
550 return ret;
551 }
552 else if(e.tag > tag || ((e.tag == tag) && e.doc_id > doc_id))
553 {
554 ret.pos = i;
555 return ret;
556 }
557 }
558 ret.pos = sz;
559 }
560 else
561 {
564 while(count)
565 {
568 _RYML_ASSERT_BASIC_(m_entries.m_callbacks, mid < sz);
569 Entry const& C4_RESTRICT e = m_entries[mid];
570 if(e.tag < tag || (e.tag == tag && e.doc_id < doc_id))
571 {
572 first = mid + 1;
573 _RYML_ASSERT_BASIC_(m_entries.m_callbacks, count >= halfsz + 1);
574 count -= halfsz + 1;
575 }
576 else
577 {
578 count = halfsz;
579 }
580 }
581 ret.pos = first;
582 if(first < sz)
583 {
584 Entry const& C4_RESTRICT e = m_entries[first];
585 if(e.tag == tag && e.doc_id == doc_id)
586 {
587 ret.resolved = m_entries[first].resolved;
588 }
589 }
590 }
591 return ret;
592}
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...