MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / IndexScanListIterator

Class IndexScanListIterator

src/jrd/btr.h:484–530  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

482// List scan iterator
483
484class IndexScanListIterator
485{
486public:
487 IndexScanListIterator(thread_db* tdbb, const IndexRetrieval* retrieval);
488
489 bool isEmpty() const
490 {
491 return m_listValues.isEmpty();
492 }
493
494 bool getNext(thread_db* tdbb, temporary_key* lower, temporary_key* upper)
495 {
496 if (++m_iterator < m_listValues.end())
497 {
498 makeKeys(tdbb, lower, upper);
499 return true;
500 }
501
502 m_iterator = nullptr;
503 return false;
504 }
505
506 const ValueExprNode* const* getLowerValues() const
507 {
508 return m_lowerValues.begin();
509 }
510
511 const ValueExprNode* const* getUpperValues() const
512 {
513 return m_upperValues.begin();
514 }
515
516 SSHORT* getScale()
517 {
518 return m_retrieval->irb_scale;
519 }
520
521private:
522 void makeKeys(thread_db* tdbb, temporary_key* lower, temporary_key* upper);
523
524 const IndexRetrieval* const m_retrieval;
525 Firebird::HalfStaticArray<const ValueExprNode*, 16> m_listValues;
526 Firebird::HalfStaticArray<const ValueExprNode*, 4> m_lowerValues;
527 Firebird::HalfStaticArray<const ValueExprNode*, 4> m_upperValues;
528 const ValueExprNode* const* m_iterator;
529 USHORT m_segno = MAX_USHORT;
530};
531
532} //namespace Jrd
533

Callers 2

BTR_evaluateFunction · 0.85
internalGetRecordMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected