From a47d233c729e7182d7ea77b707fcef12512f42bf Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Tue, 16 May 2023 14:51:46 +0000 Subject: Add reserve and simplify MatchDataLayout --- searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp | 8 +++----- searchlib/src/vespa/searchlib/fef/matchdatalayout.h | 9 ++++++--- 2 files changed, 9 insertions(+), 8 deletions(-) (limited to 'searchlib') 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::params().numTermFields(_numTermFields)); - for (size_t i = 0; i < _numTermFields; ++i) { + auto md = std::make_unique(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 _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 -- cgit v1.2.3