aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-05-16 14:51:46 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-05-16 14:51:46 +0000
commita47d233c729e7182d7ea77b707fcef12512f42bf (patch)
tree472a23085dc7702f865808de24c31b37574cd522 /searchlib
parentd05c46e97eeb9fd2b206a59349045f17ecb5937b (diff)
Add reserve and simplify MatchDataLayout
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp8
-rw-r--r--searchlib/src/vespa/searchlib/fef/matchdatalayout.h9
2 files changed, 9 insertions, 8 deletions
diff --git a/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp b/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp
index 99326b2c1e6..632bd422581 100644
--- a/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp
+++ b/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp
@@ -6,8 +6,7 @@
namespace search::fef {
MatchDataLayout::MatchDataLayout()
- : _numTermFields(0),
- _fieldIds()
+ : _fieldIds()
{
}
@@ -17,9 +16,8 @@ MatchDataLayout::~MatchDataLayout() = default;
MatchData::UP
MatchDataLayout::createMatchData() const
{
- assert(_numTermFields == _fieldIds.size());
- auto md = std::make_unique<MatchData>(MatchData::params().numTermFields(_numTermFields));
- for (size_t i = 0; i < _numTermFields; ++i) {
+ auto md = std::make_unique<MatchData>(MatchData::params().numTermFields(_fieldIds.size()));
+ for (size_t i = 0; i < _fieldIds.size(); ++i) {
md->resolveTermField(i)->setFieldId(_fieldIds[i]);
}
return md;
diff --git a/searchlib/src/vespa/searchlib/fef/matchdatalayout.h b/searchlib/src/vespa/searchlib/fef/matchdatalayout.h
index 05d25a322db..8f7717ce7ac 100644
--- a/searchlib/src/vespa/searchlib/fef/matchdatalayout.h
+++ b/searchlib/src/vespa/searchlib/fef/matchdatalayout.h
@@ -14,14 +14,16 @@ namespace search::fef {
class MatchDataLayout
{
private:
- uint32_t _numTermFields;
std::vector<uint32_t> _fieldIds;
-
public:
/**
* Create an empty object.
**/
MatchDataLayout();
+ MatchDataLayout(MatchDataLayout &&) noexcept = default;
+ MatchDataLayout & operator=(MatchDataLayout &&) noexcept = default;
+ MatchDataLayout(const MatchDataLayout &) = default;
+ MatchDataLayout & operator=(const MatchDataLayout &) = delete;
~MatchDataLayout();
/**
@@ -32,8 +34,9 @@ public:
**/
TermFieldHandle allocTermField(uint32_t fieldId) {
_fieldIds.push_back(fieldId);
- return _numTermFields++;
+ return _fieldIds.size() - 1;
}
+ void reserve(size_t sz) { _fieldIds.reserve(sz); }
/**
* Create a match data object with the layout described by this