aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-07-26 04:53:00 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-07-27 09:40:06 +0000
commitabe527c8934175607d4f903a52b9debff7a5935f (patch)
tree96af21118e31a0950caf976b908c4232a7999785
parent006f5d16fd9e5a4010c0b1068a7b96fa35136a8c (diff)
- Inline FieldSpecBase and deinline FieldSpec constructors.
- Make explicit constructors for test usage to avoid default value for isFilter parameter..
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/field_spec.cpp15
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/field_spec.h21
2 files changed, 23 insertions, 13 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/field_spec.cpp b/searchlib/src/vespa/searchlib/queryeval/field_spec.cpp
index cd1ddd5b92e..0d060f6de6b 100644
--- a/searchlib/src/vespa/searchlib/queryeval/field_spec.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/field_spec.cpp
@@ -5,12 +5,21 @@
namespace search::queryeval {
-FieldSpecBase::FieldSpecBase(uint32_t fieldId, fef::TermFieldHandle handle, bool isFilter_) noexcept
- : _fieldId(fieldId | (isFilter_ ? 0x1000000u : 0)),
- _handle(handle)
+FieldSpec::FieldSpec(const vespalib::string & name, uint32_t fieldId, fef::TermFieldHandle handle) noexcept
+ : FieldSpec(name, fieldId, handle, false)
+{}
+
+FieldSpec::FieldSpec(const vespalib::string & name, uint32_t fieldId,
+ fef::TermFieldHandle handle, bool isFilter_) noexcept
+ : FieldSpecBase(fieldId, handle, isFilter_),
+ _name(name)
{
assert(fieldId < 0x1000000); // Can be represented by 24 bits
}
+FieldSpec::FieldSpec(const vespalib::string & name, FieldSpecBase base) noexcept
+ : FieldSpecBase(base),
+ _name(name)
+{}
FieldSpecBaseList::~FieldSpecBaseList() = default;
diff --git a/searchlib/src/vespa/searchlib/queryeval/field_spec.h b/searchlib/src/vespa/searchlib/queryeval/field_spec.h
index 960afb95281..6f21ca1e0f0 100644
--- a/searchlib/src/vespa/searchlib/queryeval/field_spec.h
+++ b/searchlib/src/vespa/searchlib/queryeval/field_spec.h
@@ -19,7 +19,13 @@ namespace search::queryeval {
class FieldSpecBase
{
public:
- FieldSpecBase(uint32_t fieldId, fef::TermFieldHandle handle, bool isFilter_ = false) noexcept;
+ FieldSpecBase(uint32_t fieldId, fef::TermFieldHandle handle) noexcept
+ : FieldSpecBase(fieldId, handle, false)
+ { }
+ FieldSpecBase(uint32_t fieldId, fef::TermFieldHandle handle, bool isFilter_) noexcept
+ : _fieldId(fieldId | (isFilter_ ? 0x1000000u : 0)),
+ _handle(handle)
+ { }
// resolve where to put match information for this term/field combination
fef::TermFieldMatchData *resolve(fef::MatchData &md) const;
@@ -29,7 +35,7 @@ public:
/// a filter produces less detailed match data
bool isFilter() const noexcept { return _fieldId & 0x1000000; }
private:
- uint32_t _fieldId; // field id in ranking framework
+ uint32_t _fieldId; // field id in ranking framework, and isFilter
fef::TermFieldHandle _handle; // handle used when exposing match data to ranking framework
};
@@ -39,15 +45,10 @@ private:
class FieldSpec : public FieldSpecBase
{
public:
+ FieldSpec(const vespalib::string & name, uint32_t fieldId, fef::TermFieldHandle handle) noexcept;
FieldSpec(const vespalib::string & name, uint32_t fieldId,
- fef::TermFieldHandle handle, bool isFilter_ = false) noexcept
- : FieldSpecBase(fieldId, handle, isFilter_),
- _name(name)
- {}
- FieldSpec(const vespalib::string & name, FieldSpecBase base) noexcept
- : FieldSpecBase(base),
- _name(name)
- {}
+ fef::TermFieldHandle handle, bool isFilter_) noexcept;
+ FieldSpec(const vespalib::string & name, FieldSpecBase base) noexcept;
~FieldSpec();
void setBase(FieldSpecBase base) noexcept {