aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/vespa/searchlib/queryeval/searchiterator.h
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/vespa/searchlib/queryeval/searchiterator.h')
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/searchiterator.h20
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
*/