diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-09-04 15:28:15 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-09-04 15:28:15 +0000 |
commit | 5cad015138021d5b480bed25bb293ac968f22286 (patch) | |
tree | c87068eb991d936ed58bf0759f78c8f92b87c570 /searchlib | |
parent | bbe8348c819ecd5ca9069d923ba2769432e17246 (diff) |
- Use c++11 for loops
- add 'explicit'
- only 'override' OR 'final', not both.
- Reduce code visibility.
Diffstat (limited to 'searchlib')
17 files changed, 92 insertions, 96 deletions
diff --git a/searchlib/src/apps/tests/memoryindexstress_test.cpp b/searchlib/src/apps/tests/memoryindexstress_test.cpp index d8f8cd9d67c..526b4cad9a6 100644 --- a/searchlib/src/apps/tests/memoryindexstress_test.cpp +++ b/searchlib/src/apps/tests/memoryindexstress_test.cpp @@ -11,6 +11,7 @@ #include <vespa/searchlib/queryeval/fake_search.h> #include <vespa/searchlib/queryeval/fake_searchable.h> #include <vespa/searchlib/queryeval/searchiterator.h> +#include <vespa/searchlib/queryeval/blueprint.h> #include <vespa/searchlib/test/index/mock_field_length_inspector.h> #include <vespa/document/annotation/spanlist.h> #include <vespa/document/annotation/spantree.h> @@ -328,8 +329,7 @@ Fixture::readWork(uint32_t cnt) FieldSpec field(fieldName, fieldId, handle); FieldSpecList fields; fields.add(field); - Blueprint::UP result = index.createBlueprint(requestContext, - fields, term); + Blueprint::UP result = index.createBlueprint(requestContext, fields, term); if (!EXPECT_TRUE(result.get() != 0)) { LOG(error, "Did not get blueprint"); break; diff --git a/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp b/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp index c806a1b02ac..b3ea948dfa7 100644 --- a/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp +++ b/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp @@ -10,9 +10,9 @@ #include <vespa/searchlib/query/tree/simplequery.h> #include <vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h> #include <vespa/searchlib/queryeval/fake_requestcontext.h> -#include <vespa/searchlib/queryeval/fake_search.h> #include <vespa/searchlib/queryeval/fake_searchable.h> #include <vespa/searchlib/queryeval/searchiterator.h> +#include <vespa/searchlib/queryeval/blueprint.h> #include <vespa/vespalib/util/sequencedtaskexecutor.h> #include <vespa/vespalib/util/size_literals.h> #include <vespa/vespalib/util/stringfmt.h> diff --git a/searchlib/src/tests/queryeval/fake_searchable/fake_searchable_test.cpp b/searchlib/src/tests/queryeval/fake_searchable/fake_searchable_test.cpp index d8ae70d147d..e9c4bdb26a5 100644 --- a/searchlib/src/tests/queryeval/fake_searchable/fake_searchable_test.cpp +++ b/searchlib/src/tests/queryeval/fake_searchable/fake_searchable_test.cpp @@ -4,6 +4,7 @@ #include <vespa/searchlib/queryeval/fake_searchable.h> #include <vespa/searchlib/queryeval/fake_requestcontext.h> +#include <vespa/searchlib/queryeval/blueprint.h> #include <vespa/searchlib/query/tree/intermediatenodes.h> #include <vespa/searchlib/query/tree/termnodes.h> #include <vespa/searchlib/query/tree/simplequery.h> diff --git a/searchlib/src/vespa/searchcommon/attribute/basictype.cpp b/searchlib/src/vespa/searchcommon/attribute/basictype.cpp index 5bab2fc06d2..d0d90d1c9d5 100644 --- a/searchlib/src/vespa/searchcommon/attribute/basictype.cpp +++ b/searchlib/src/vespa/searchcommon/attribute/basictype.cpp @@ -1,6 +1,6 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/searchcommon/attribute/basictype.h> +#include "basictype.h" #include <vespa/vespalib/util/exceptions.h> namespace search::attribute { diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp index 7af2186ed1e..5905995d586 100644 --- a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp @@ -33,6 +33,7 @@ #include <vespa/searchlib/queryeval/wand/parallel_weak_and_search.h> #include <vespa/searchlib/queryeval/weighted_set_term_blueprint.h> #include <vespa/searchlib/queryeval/weighted_set_term_search.h> +#include <vespa/searchlib/queryeval/irequestcontext.h> #include <vespa/searchlib/tensor/dense_tensor_attribute.h> #include <vespa/vespalib/util/regexp.h> #include <vespa/vespalib/util/stringfmt.h> @@ -193,7 +194,7 @@ AttributeFieldBlueprint::visitMembers(vespalib::ObjectVisitor &visitor) const template <bool is_strict> struct LocationPreFilterIterator : public OrLikeSearch<is_strict, NoUnpack> { - LocationPreFilterIterator(OrSearch::Children children) + explicit LocationPreFilterIterator(OrSearch::Children children) : OrLikeSearch<is_strict, NoUnpack>(std::move(children), NoUnpack()) {} void doUnpack(uint32_t) override {} }; @@ -214,8 +215,7 @@ public: { uint64_t estHits(0); const IAttributeVector &attr(_attribute); - for (auto it(rangeVector.begin()), mt(rangeVector.end()); it != mt; it++) { - const ZCurve::Range &r(*it); + for (const ZCurve::Range & r : rangeVector) { query::Range qr(r.min(), r.max()); query::SimpleRangeTerm rt(qr, "", 0, query::Weight(0)); string stack(StackDumpCreator::create(rt)); @@ -235,7 +235,7 @@ public: set_allow_termwise_eval(true); } - ~LocationPreFilterBlueprint(); + ~LocationPreFilterBlueprint() override; bool should_use() const { return _should_use; } @@ -243,8 +243,8 @@ public: createLeafSearch(const TermFieldMatchDataArray &tfmda, bool strict) const override { OrSearch::Children children; - for (auto it(_rangeSearches.begin()), mt(_rangeSearches.end()); it != mt; it++) { - children.push_back((*it)->createIterator(tfmda[0], strict)); + for (auto & search : _rangeSearches) { + children.push_back(search->createIterator(tfmda[0], strict)); } if (strict) { return std::make_unique<LocationPreFilterIterator<true>>(std::move(children)); @@ -254,8 +254,8 @@ public: } void fetchPostings(const queryeval::ExecuteInfo &execInfo) override { - for (size_t i(0); i < _rangeSearches.size(); i++) { - _rangeSearches[i]->fetchPostings(execInfo); + for (auto & search : _rangeSearches) { + search->fetchPostings(execInfo); } } }; @@ -286,7 +286,7 @@ public: setEstimate(estimate); } - ~LocationPostFilterBlueprint(); + ~LocationPostFilterBlueprint() override; const common::Location &location() const { return _location; } @@ -410,7 +410,7 @@ public: { assert(tfmda.size() == 1); assert(getState().numFields() == 1); - if (_terms.size() == 0) { + if (_terms.empty()) { return std::make_unique<queryeval::EmptySearch>(); } std::vector<DocumentWeightIterator> iterators; @@ -428,7 +428,7 @@ public: if (fields.has_field(_field_name)) { return queryeval::MatchingElementsSearch::create(_iattr, _dictionary_snapshot, vespalib::ConstArrayRef<IDocumentWeightAttribute::LookupResult>(_terms)); } else { - return std::unique_ptr<queryeval::MatchingElementsSearch>(); + return {}; } } }; @@ -481,7 +481,7 @@ public: _terms.reserve(size_hint); } - ~DirectWandBlueprint(); + ~DirectWandBlueprint() override; void addTerm(const IDocumentWeightAttribute::LookupKey & key, int32_t weight) { IDocumentWeightAttribute::LookupResult result = _attr.lookup(key, _dictionary_snapshot); @@ -500,7 +500,7 @@ public: SearchIterator::UP createLeafSearch(const TermFieldMatchDataArray &tfmda, bool strict) const override { assert(tfmda.size() == 1); - if (_terms.size() == 0) { + if (_terms.empty()) { return std::make_unique<queryeval::EmptySearch>(); } return queryeval::ParallelWeakAndSearch::create(*tfmda[0], @@ -585,7 +585,7 @@ public: if (fields.has_field(_attrName)) { return queryeval::MatchingElementsSearch::create(_iattr, _dictionary_snapshot, vespalib::ConstArrayRef<IDocumentWeightAttribute::LookupResult>(&_dict_entry, 1)); } else { - return std::unique_ptr<queryeval::MatchingElementsSearch>(); + return {}; } } }; @@ -637,12 +637,11 @@ public: } void visitLocation(LocationTerm &node) { - Location loc(node.getTerm()); - setResult(make_location_blueprint(_field, _attr, loc)); + setResult(make_location_blueprint(_field, _attr, node.getTerm())); } void visitPredicate(PredicateQuery &query) { - const PredicateAttribute *attr = dynamic_cast<const PredicateAttribute *>(&_attr); + const auto *attr = dynamic_cast<const PredicateAttribute *>(&_attr); if (!attr) { Issue::report("Trying to apply a PredicateQuery node to a non-predicate attribute."); setResult(std::make_unique<queryeval::EmptyBlueprint>(_field)); diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.h b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.h index fe456794a04..368af80a43d 100644 --- a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.h +++ b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.h @@ -3,16 +3,13 @@ #pragma once #include <vespa/searchlib/queryeval/searchable.h> -#include <vespa/searchlib/attribute/iattributemanager.h> -#include <vespa/searchlib/queryeval/irequestcontext.h> namespace search { class AttributeBlueprintFactory : public queryeval::Searchable { public: - // implements Searchable - queryeval::Blueprint::UP + std::unique_ptr<queryeval::Blueprint> createBlueprint(const queryeval::IRequestContext & requestContext, const queryeval::FieldSpec &field, const query::Node &term) override; diff --git a/searchlib/src/vespa/searchlib/diskindex/diskindex.h b/searchlib/src/vespa/searchlib/diskindex/diskindex.h index 0869bccc307..f1a294f90ef 100644 --- a/searchlib/src/vespa/searchlib/diskindex/diskindex.h +++ b/searchlib/src/vespa/searchlib/diskindex/diskindex.h @@ -133,13 +133,13 @@ public: */ BitVector::UP readBitVector(const LookupResult &lookupRes) const; - queryeval::Blueprint::UP createBlueprint(const queryeval::IRequestContext & requestContext, - const queryeval::FieldSpec &field, - const query::Node &term) override; + std::unique_ptr<queryeval::Blueprint> createBlueprint(const queryeval::IRequestContext & requestContext, + const queryeval::FieldSpec &field, + const query::Node &term) override; - queryeval::Blueprint::UP createBlueprint(const queryeval::IRequestContext & requestContext, - const queryeval::FieldSpecList &fields, - const query::Node &term) override; + std::unique_ptr<queryeval::Blueprint> createBlueprint(const queryeval::IRequestContext & requestContext, + const queryeval::FieldSpecList &fields, + const query::Node &term) override; /** * Get the size on disk of this index. diff --git a/searchlib/src/vespa/searchlib/memoryindex/memory_index.h b/searchlib/src/vespa/searchlib/memoryindex/memory_index.h index 4296ba5bd1a..242703d4ccc 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/memory_index.h +++ b/searchlib/src/vespa/searchlib/memoryindex/memory_index.h @@ -60,11 +60,6 @@ private: vespalib::hash_set<uint32_t> _indexedDocs; // documents in memory index const uint64_t _staticMemoryFootprint; - MemoryIndex(const MemoryIndex &) = delete; - MemoryIndex(MemoryIndex &&) = delete; - MemoryIndex &operator=(const MemoryIndex &) = delete; - MemoryIndex &operator=(MemoryIndex &&) = delete; - void updateMaxDocId(uint32_t docId) { if (docId > _maxDocId) { _maxDocId = docId; @@ -99,7 +94,11 @@ public: ISequencedTaskExecutor& invertThreads, ISequencedTaskExecutor& pushThreads); - ~MemoryIndex(); + MemoryIndex(const MemoryIndex &) = delete; + MemoryIndex(MemoryIndex &&) = delete; + MemoryIndex &operator=(const MemoryIndex &) = delete; + MemoryIndex &operator=(MemoryIndex &&) = delete; + ~MemoryIndex() override; const index::Schema &getSchema() const { return _schema; } @@ -141,13 +140,14 @@ public: void dump(index::IndexBuilder &indexBuilder); // Implements Searchable - queryeval::Blueprint::UP createBlueprint(const queryeval::IRequestContext & requestContext, - const queryeval::FieldSpec &field, - const query::Node &term) override; - - queryeval::Blueprint::UP createBlueprint(const queryeval::IRequestContext & requestContext, - const queryeval::FieldSpecList &fields, - const query::Node &term) override { + std::unique_ptr<queryeval::Blueprint> createBlueprint(const queryeval::IRequestContext & requestContext, + const queryeval::FieldSpec &field, + const query::Node &term) override; + + std::unique_ptr<queryeval::Blueprint> createBlueprint(const queryeval::IRequestContext & requestContext, + const queryeval::FieldSpecList &fields, + const query::Node &term) override + { return queryeval::Searchable::createBlueprint(requestContext, fields, term); } diff --git a/searchlib/src/vespa/searchlib/queryeval/blueprint.h b/searchlib/src/vespa/searchlib/queryeval/blueprint.h index 5dca5c9412b..b7fe627d854 100644 --- a/searchlib/src/vespa/searchlib/queryeval/blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/blueprint.h @@ -259,12 +259,12 @@ private: void updateState() const; protected: - void notifyChange() override final; + void notifyChange() final; virtual State calculateState() const = 0; public: StateCache() : _stale(true), _state(FieldSpecBaseList()) {} - const State &getState() const override final { + const State &getState() const final { if (_stale) { updateState(); } @@ -296,7 +296,7 @@ protected: // conflicting collections of field specs. FieldSpecBaseList mixChildrenFields() const; - State calculateState() const override final; + State calculateState() const final; virtual bool isPositive(size_t index) const { (void) index; return true; } @@ -309,9 +309,9 @@ public: IntermediateBlueprint(); ~IntermediateBlueprint() override; - void setDocIdLimit(uint32_t limit) override final; + void setDocIdLimit(uint32_t limit) final; - void optimize(Blueprint* &self) override final; + void optimize(Blueprint* &self) final; void set_global_filter(const GlobalFilter &global_filter, double estimated_hit_ratio) override; IndexList find(const IPredicate & check) const; @@ -333,7 +333,7 @@ public: void visitMembers(vespalib::ObjectVisitor &visitor) const override; void fetchPostings(const ExecuteInfo &execInfo) override; - void freeze() override final; + void freeze() final; UnpackInfo calculateUnpackInfo(const fef::MatchData & md) const; bool isIntermediate() const override { return true; } @@ -346,7 +346,7 @@ private: State _state; protected: - void optimize(Blueprint* &self) override final; + void optimize(Blueprint* &self) final; void setEstimate(HitEstimate est); void set_cost_tier(uint32_t value); void set_allow_termwise_eval(bool value); @@ -356,10 +356,10 @@ protected: LeafBlueprint(const FieldSpecBaseList &fields, bool allow_termwise_eval); public: ~LeafBlueprint() override; - const State &getState() const override final { return _state; } - void setDocIdLimit(uint32_t limit) override final { Blueprint::setDocIdLimit(limit); } + const State &getState() const final { return _state; } + void setDocIdLimit(uint32_t limit) final { Blueprint::setDocIdLimit(limit); } void fetchPostings(const ExecuteInfo &execInfo) override; - void freeze() override final; + void freeze() final; SearchIteratorUP createSearch(fef::MatchData &md, bool strict) const override; virtual SearchIteratorUP createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, bool strict) const = 0; @@ -367,14 +367,14 @@ public: // for leaf nodes representing a single term struct SimpleLeafBlueprint : LeafBlueprint { - SimpleLeafBlueprint(const FieldSpecBase &field) : LeafBlueprint(FieldSpecBaseList().add(field), true) {} - SimpleLeafBlueprint(const FieldSpecBaseList &fields) : LeafBlueprint(fields, true) {} + explicit SimpleLeafBlueprint(const FieldSpecBase &field) : LeafBlueprint(FieldSpecBaseList().add(field), true) {} + explicit SimpleLeafBlueprint(const FieldSpecBaseList &fields) : LeafBlueprint(fields, true) {} }; // for leaf nodes representing more complex structures like wand/phrase struct ComplexLeafBlueprint : LeafBlueprint { - ComplexLeafBlueprint(const FieldSpecBase &field) : LeafBlueprint(FieldSpecBaseList().add(field), false) {} - ComplexLeafBlueprint(const FieldSpecBaseList &fields) : LeafBlueprint(fields, false) {} + explicit ComplexLeafBlueprint(const FieldSpecBase &field) : LeafBlueprint(FieldSpecBaseList().add(field), false) {} + explicit ComplexLeafBlueprint(const FieldSpecBaseList &fields) : LeafBlueprint(fields, false) {} }; //----------------------------------------------------------------------------- diff --git a/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h b/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h index 30c7e1722fb..c410f8b98c4 100644 --- a/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h +++ b/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h @@ -2,7 +2,7 @@ #pragma once -#include "searchable.h" +#include "field_spec.h" #include "termasstring.h" #include <vespa/searchlib/query/tree/intermediatenodes.h> #include <vespa/searchlib/query/tree/queryvisitor.h> @@ -12,13 +12,17 @@ namespace search::queryeval { +class IRequestContext; +class Searchable; +class Blueprint; + class CreateBlueprintVisitorHelper : public query::QueryVisitor { private: const IRequestContext & _requestContext; Searchable & _searchable; FieldSpec _field; - Blueprint::UP _result; + std::unique_ptr<Blueprint> _result; protected: const IRequestContext & getRequestContext() const { return _requestContext; } @@ -30,7 +34,7 @@ public: template <typename T> void setResult(std::unique_ptr<T> result) { _result = std::move(result); } - Blueprint::UP getResult(); + std::unique_ptr<Blueprint> getResult(); const FieldSpec &getField() const { return _field; } diff --git a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h index 5955c359003..d1992fc67c5 100644 --- a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h @@ -2,7 +2,7 @@ #pragma once -#include "searchable.h" +#include "blueprint.h" #include <vespa/searchlib/fef/matchdatalayout.h> namespace search::fef { class TermFieldMatchData; } @@ -16,11 +16,10 @@ class DotProductBlueprint : public ComplexLeafBlueprint std::vector<int32_t> _weights; std::vector<Blueprint*> _terms; - DotProductBlueprint(const DotProductBlueprint &); // disabled - DotProductBlueprint &operator=(const DotProductBlueprint &); // disabled - public: - DotProductBlueprint(const FieldSpec &field); + explicit DotProductBlueprint(const FieldSpec &field); + DotProductBlueprint(const DotProductBlueprint &) = delete; + DotProductBlueprint &operator=(const DotProductBlueprint &) = delete; ~DotProductBlueprint() override; // used by create visitor @@ -29,9 +28,7 @@ public: // used by create visitor void addTerm(Blueprint::UP term, int32_t weight); - SearchIteratorUP - createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda, - bool strict) const override; + SearchIteratorUP createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda, bool strict) const override; SearchIteratorUP createFilterSearch(bool strict, FilterConstraint constraint) const override; void visitMembers(vespalib::ObjectVisitor &visitor) const override; diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_searchable.h b/searchlib/src/vespa/searchlib/queryeval/fake_searchable.h index 5dd678e547d..a76e23ad87e 100644 --- a/searchlib/src/vespa/searchlib/queryeval/fake_searchable.h +++ b/searchlib/src/vespa/searchlib/queryeval/fake_searchable.h @@ -4,8 +4,7 @@ #include "searchable.h" #include "fake_result.h" - -#include <string> +#include <vespa/vespalib/stllike/string.h> #include <map> namespace search::queryeval { @@ -65,10 +64,11 @@ public: const FakeResult &result); using Searchable::createBlueprint; - Blueprint::UP createBlueprint(const IRequestContext & requestContext, - const FieldSpec &field, - const search::query::Node &term) override; - ~FakeSearchable(); + std::unique_ptr<queryeval::Blueprint> + createBlueprint(const IRequestContext & requestContext, + const FieldSpec &field, + const search::query::Node &term) override; + ~FakeSearchable() override; }; } diff --git a/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp b/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp index f7fc99af573..d69b3486537 100644 --- a/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp @@ -5,8 +5,6 @@ #include "andnotsearch.h" #include "sourceblendersearch.h" #include <vespa/searchlib/common/bitvectoriterator.h> -#include <vespa/searchlib/fef/termfieldmatchdataarray.h> -#include <vespa/vespalib/util/optimized.h> #include <vespa/vespalib/hwaccelrated/iaccelrated.h> namespace search::queryeval { diff --git a/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.h index 5eb8e3ff21c..2d3cb5cca99 100644 --- a/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.h @@ -2,7 +2,7 @@ #pragma once -#include "searchable.h" +#include "blueprint.h" #include <vespa/searchlib/fef/matchdatalayout.h> namespace search::fef { class TermFieldMatchData; } @@ -23,7 +23,7 @@ public: SameElementBlueprint(const vespalib::string &field_name_in, bool expensive); SameElementBlueprint(const SameElementBlueprint &) = delete; SameElementBlueprint &operator=(const SameElementBlueprint &) = delete; - ~SameElementBlueprint(); + ~SameElementBlueprint() override; // no match data bool isWhiteList() const override { return true; } diff --git a/searchlib/src/vespa/searchlib/queryeval/searchable.h b/searchlib/src/vespa/searchlib/queryeval/searchable.h index 2467cfe4142..a8bdde69b8e 100644 --- a/searchlib/src/vespa/searchlib/queryeval/searchable.h +++ b/searchlib/src/vespa/searchlib/queryeval/searchable.h @@ -2,15 +2,17 @@ #pragma once -#include "field_spec.h" -#include "blueprint.h" -#include <vespa/searchlib/queryeval/irequestcontext.h> -#include <vector> +#include <memory> namespace search::query { class Node; } namespace search::queryeval { +class Blueprint; +class IRequestContext; +class FieldSpec; +class FieldSpecList; + /** * Abstract class extended by components to expose content that can be * searched by a query term. A Searchable component supports searching @@ -29,9 +31,9 @@ protected: * @param field the field to search * @param term the query tree term **/ - virtual Blueprint::UP createBlueprint(const IRequestContext & requestContext, - const FieldSpec &field, - const search::query::Node &term) = 0; + virtual std::unique_ptr<Blueprint> createBlueprint(const IRequestContext & requestContext, + const FieldSpec &field, + const search::query::Node &term) = 0; public: typedef std::shared_ptr<Searchable> SP; @@ -48,9 +50,9 @@ public: * @param fields the set of fields to search * @param term the query tree term **/ - virtual Blueprint::UP createBlueprint(const IRequestContext & requestContext, - const FieldSpecList &fields, - const search::query::Node &term); + virtual std::unique_ptr<Blueprint> createBlueprint(const IRequestContext & requestContext, + const FieldSpecList &fields, + const search::query::Node &term); virtual ~Searchable() = default; }; diff --git a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h index 5ae7673269f..0cfb2357321 100644 --- a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h @@ -2,8 +2,7 @@ #pragma once -#include "searchable.h" -#include "irequestcontext.h" +#include "blueprint.h" #include <vespa/searchlib/fef/matchdatalayout.h> namespace search::fef { class TermFieldMatchData; } diff --git a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h index b726f55d254..a840310d3d9 100644 --- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h @@ -2,7 +2,7 @@ #pragma once -#include "searchable.h" +#include "blueprint.h" #include <vespa/searchlib/fef/matchdatalayout.h> #include <vector> @@ -18,12 +18,11 @@ class WeightedSetTermBlueprint : public ComplexLeafBlueprint std::vector<int32_t> _weights; std::vector<Blueprint*> _terms; - WeightedSetTermBlueprint(const WeightedSetTermBlueprint &); // disabled - WeightedSetTermBlueprint &operator=(const WeightedSetTermBlueprint &); // disabled - public: WeightedSetTermBlueprint(const FieldSpec &field); - ~WeightedSetTermBlueprint(); + WeightedSetTermBlueprint(const WeightedSetTermBlueprint &) = delete; + WeightedSetTermBlueprint &operator=(const WeightedSetTermBlueprint &) = delete; + ~WeightedSetTermBlueprint() override; // used by create visitor // matches signature in dot product blueprint for common blueprint |