diff options
Diffstat (limited to 'searchlib/src/vespa/searchlib/queryeval/searchiterator.h')
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/searchiterator.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/searchiterator.h b/searchlib/src/vespa/searchlib/queryeval/searchiterator.h index 4ab066727af..f8124a161e2 100644 --- a/searchlib/src/vespa/searchlib/queryeval/searchiterator.h +++ b/searchlib/src/vespa/searchlib/queryeval/searchiterator.h @@ -1,4 +1,4 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once @@ -331,7 +331,23 @@ public: /** * @return true if it is a bitvector */ - virtual bool isBitVector() const { return false; } + class BitVectorMeta { + public: + BitVectorMeta() noexcept : BitVectorMeta(nullptr, 0, false) {} + BitVectorMeta(const BitVector * bv, uint32_t docidLimit, bool inverted_in) noexcept + : _bv(bv), _docidLimit(docidLimit), _inverted(inverted_in) + {} + const BitVector * vector() const noexcept { return _bv; } + bool inverted () const noexcept { return _inverted; } + uint32_t getDocidLimit() const noexcept { return _docidLimit; } + bool valid() const noexcept { return _bv != nullptr; } + private: + const BitVector * _bv; + uint32_t _docidLimit; + bool _inverted; + }; + bool isBitVector() const noexcept { return asBitVector().valid(); } + virtual BitVectorMeta asBitVector() const noexcept { return {}; } /** * @return true if it is a source blender */ |