diff options
9 files changed, 16 insertions, 24 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp index f3559b54eb4..c65257e7f6a 100644 --- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp +++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp @@ -147,8 +147,7 @@ DocsumContext::DocsumContext(const DocsumRequest & request, IDocsumWriter & docs _attrCtx(attrCtx), _attrMgr(attrMgr), _docsumState(*this), - _sessionMgr(sessionMgr), - _matching_elements() + _sessionMgr(sessionMgr) { initState(); } @@ -215,11 +214,10 @@ DocsumContext::ParseLocation(search::docsummary::GetDocsumsState *state) state->_parsedLocation.reset(getLocation(_request.location, _attrMgr)); } -const MatchingElements& +std::unique_ptr<MatchingElements> DocsumContext::fill_matching_elements() { - _matching_elements = std::make_unique<MatchingElements>(); - return *_matching_elements; + return std::make_unique<MatchingElements>(); } } // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h index ec03efdd650..30b5ef16cb1 100644 --- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h +++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h @@ -25,7 +25,6 @@ private: search::IAttributeManager & _attrMgr; search::docsummary::GetDocsumsState _docsumState; matching::SessionManager & _sessionMgr; - std::unique_ptr<search::MatchingElements> _matching_elements; void initState(); search::engine::DocsumReply::UP createReply(); @@ -49,7 +48,7 @@ public: void FillSummaryFeatures(search::docsummary::GetDocsumsState * state, search::docsummary::IDocsumEnvironment * env) override; void FillRankFeatures(search::docsummary::GetDocsumsState * state, search::docsummary::IDocsumEnvironment * env) override; void ParseLocation(search::docsummary::GetDocsumsState * state) override; - const search::MatchingElements& fill_matching_elements() override; + std::unique_ptr<search::MatchingElements> fill_matching_elements() override; }; } // namespace proton diff --git a/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp b/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp index 240e7334292..961acadeddf 100644 --- a/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp +++ b/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp @@ -165,7 +165,7 @@ public: void FillSummaryFeatures(GetDocsumsState *, IDocsumEnvironment *) override { } void FillRankFeatures(GetDocsumsState *, IDocsumEnvironment *) override { } void ParseLocation(GetDocsumsState *) override { } - const MatchingElements& fill_matching_elements() override { return _matching_elements; } + std::unique_ptr<MatchingElements> fill_matching_elements() override { return std::make_unique<MatchingElements>(_matching_elements); } ~DummyStateCallback() override { } }; diff --git a/searchsummary/src/tests/docsummary/positionsdfw_test.cpp b/searchsummary/src/tests/docsummary/positionsdfw_test.cpp index 86a2e9ae76f..476891ca40f 100644 --- a/searchsummary/src/tests/docsummary/positionsdfw_test.cpp +++ b/searchsummary/src/tests/docsummary/positionsdfw_test.cpp @@ -106,7 +106,7 @@ struct MyGetDocsumsStateCallback : GetDocsumsStateCallback { virtual void FillSummaryFeatures(GetDocsumsState *, IDocsumEnvironment *) override {} virtual void FillRankFeatures(GetDocsumsState *, IDocsumEnvironment *) override {} virtual void ParseLocation(GetDocsumsState *) override {} - const MatchingElements& fill_matching_elements() override { abort(); } + std::unique_ptr<MatchingElements> fill_matching_elements() override { abort(); } }; template <typename AttrType> diff --git a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp index bd753f24bf3..efeb066135f 100644 --- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp +++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp @@ -79,7 +79,7 @@ struct DocsumFixture : IDocsumStore, GetDocsumsStateCallback { void FillSummaryFeatures(GetDocsumsState *, IDocsumEnvironment *) override { } void FillRankFeatures(GetDocsumsState *, IDocsumEnvironment *) override { } void ParseLocation(GetDocsumsState *) override { } - const MatchingElements& fill_matching_elements() override { abort(); } + std::unique_ptr<MatchingElements> fill_matching_elements() override { abort(); } }; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp index d78c908fa6a..7a609f2c971 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp @@ -26,7 +26,7 @@ GetDocsumsState::GetDocsumsState(GetDocsumsStateCallback &callback) _summaryFeatures(NULL), _summaryFeaturesCached(false), _rankFeatures(NULL), - _matching_elements(nullptr) + _matching_elements() { _dynteaser._docid = static_cast<uint32_t>(-1); _dynteaser._input = static_cast<uint32_t>(-1); @@ -52,8 +52,8 @@ GetDocsumsState::~GetDocsumsState() const MatchingElements & GetDocsumsState::get_matching_elements() { - if (_matching_elements == nullptr) { - _matching_elements = &_callback.fill_matching_elements(); + if (!_matching_elements) { + _matching_elements = _callback.fill_matching_elements(); } return *_matching_elements; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h index 394913d3ad9..9eec51e3459 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h @@ -32,7 +32,7 @@ public: virtual void FillSummaryFeatures(GetDocsumsState * state, IDocsumEnvironment * env) = 0; virtual void FillRankFeatures(GetDocsumsState * state, IDocsumEnvironment * env) = 0; virtual void ParseLocation(GetDocsumsState * state) = 0; - virtual const MatchingElements& fill_matching_elements() = 0; + virtual std::unique_ptr<MatchingElements> fill_matching_elements() = 0; virtual ~GetDocsumsStateCallback(void) { } GetDocsumsStateCallback(const GetDocsumsStateCallback &) = delete; GetDocsumsStateCallback & operator = (const GetDocsumsStateCallback &) = delete; @@ -87,7 +87,7 @@ public: FeatureSet::SP _rankFeatures; // Used by AttributeCombinerDFW when filtering is enabled - const search::MatchingElements* _matching_elements; + std::unique_ptr<search::MatchingElements> _matching_elements; GetDocsumsState(const GetDocsumsState &) = delete; GetDocsumsState& operator=(const GetDocsumsState &) = delete; diff --git a/vsm/src/vespa/vsm/vsm/vsm-adapter.cpp b/vsm/src/vespa/vsm/vsm/vsm-adapter.cpp index 6f9e58f8718..8a480419aa5 100644 --- a/vsm/src/vespa/vsm/vsm/vsm-adapter.cpp +++ b/vsm/src/vespa/vsm/vsm/vsm-adapter.cpp @@ -16,8 +16,7 @@ namespace vsm { GetDocsumsStateCallback::GetDocsumsStateCallback() : _summaryFeatures(), - _rankFeatures(), - _matching_elements() + _rankFeatures() { } void GetDocsumsStateCallback::FillSummaryFeatures(GetDocsumsState * state, IDocsumEnvironment * env) @@ -48,13 +47,10 @@ void GetDocsumsStateCallback::FillDocumentLocations(GetDocsumsState *state, IDoc (void) env; } -const MatchingElements& +std::unique_ptr<MatchingElements> GetDocsumsStateCallback::fill_matching_elements() { - if (!_matching_elements) { - _matching_elements = std::make_unique<MatchingElements>(); - } - return *_matching_elements; + return std::make_unique<MatchingElements>(); } GetDocsumsStateCallback::~GetDocsumsStateCallback() = default; diff --git a/vsm/src/vespa/vsm/vsm/vsm-adapter.h b/vsm/src/vespa/vsm/vsm/vsm-adapter.h index aaa73f4ba24..2a5b1e1d47c 100644 --- a/vsm/src/vespa/vsm/vsm/vsm-adapter.h +++ b/vsm/src/vespa/vsm/vsm/vsm-adapter.h @@ -32,7 +32,6 @@ class GetDocsumsStateCallback : public search::docsummary::GetDocsumsStateCallba private: search::FeatureSet::SP _summaryFeatures; search::FeatureSet::SP _rankFeatures; - std::unique_ptr<search::MatchingElements> _matching_elements; public: GetDocsumsStateCallback(); @@ -40,7 +39,7 @@ public: void FillRankFeatures(GetDocsumsState * state, IDocsumEnvironment * env) override; void ParseLocation(GetDocsumsState * state) override; virtual void FillDocumentLocations(GetDocsumsState * state, IDocsumEnvironment * env); - virtual const search::MatchingElements& fill_matching_elements() override; + virtual std::unique_ptr<search::MatchingElements> fill_matching_elements() override; void setSummaryFeatures(const search::FeatureSet::SP & sf) { _summaryFeatures = sf; } void setRankFeatures(const search::FeatureSet::SP & rf) { _rankFeatures = rf; } ~GetDocsumsStateCallback(); |