diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-08-26 14:53:03 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-08-26 14:53:03 +0200 |
commit | fc697cd7eb9d75fc18034c3b6def0d06eb3c86b7 (patch) | |
tree | 04809cd1b691c9e479b8cf4113a63cee2ccde725 /searchsummary/src | |
parent | 6abaff9335b2f9fc36f121becce93fa792cb97f5 (diff) |
Use smart pointers in search::docsummary::DynamicDocsumWriter.
Diffstat (limited to 'searchsummary/src')
33 files changed, 78 insertions, 94 deletions
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 267d2f6f0aa..445b08570a6 100644 --- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp +++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp @@ -108,7 +108,7 @@ DocsumFixture::DocsumFixture() doc_type("test"), state(*this) { - ResultConfig *config = new ResultConfig; + auto config = std::make_unique<ResultConfig>(); ResultClass *cfg = config->AddResultClass("default", 0); EXPECT_TRUE(cfg != 0); EXPECT_TRUE(cfg->AddConfigEntry("int_field", RES_INT)); @@ -124,7 +124,7 @@ DocsumFixture::DocsumFixture() EXPECT_TRUE(cfg->AddConfigEntry("int_pair_field", RES_JSONSTRING)); config->set_default_result_class_id(0); config->CreateEnumMaps(); - writer.reset(new DynamicDocsumWriter(config, 0)); + writer = std::make_unique<DynamicDocsumWriter>(std::move(config), std::unique_ptr<KeywordExtractor>()); int_pair_type.addField(Field("foo", *DataType::INT)); int_pair_type.addField(Field("bar", *DataType::INT)); doc_type.addField(Field("int_field", *DataType::INT)); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp index f308795a1bc..772df12b13e 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp @@ -122,7 +122,7 @@ ArrayAttributeCombinerDFW::ArrayAttributeCombinerDFW(const vespalib::string &fie ArrayAttributeCombinerDFW::~ArrayAttributeCombinerDFW() = default; DocsumFieldWriterState* -ArrayAttributeCombinerDFW::allocFieldWriterState(IAttributeContext &context, vespalib::Stash &stash, const MatchingElements* matching_elements) +ArrayAttributeCombinerDFW::allocFieldWriterState(IAttributeContext &context, vespalib::Stash &stash, const MatchingElements* matching_elements) const { return &stash.create<ArrayAttributeFieldWriterState>(_fields, _attributeNames, context, stash, _fieldName, matching_elements, _is_map_of_scalar); } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.h b/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.h index e5bed876b63..478fc558915 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.h @@ -23,7 +23,7 @@ class ArrayAttributeCombinerDFW : public AttributeCombinerDFW std::vector<vespalib::string> _attributeNames; bool _is_map_of_scalar; - DocsumFieldWriterState* allocFieldWriterState(search::attribute::IAttributeContext &context, vespalib::Stash &stash, const MatchingElements* matching_elements) override; + DocsumFieldWriterState* allocFieldWriterState(search::attribute::IAttributeContext &context, vespalib::Stash &stash, const MatchingElements* matching_elements) const override; public: ArrayAttributeCombinerDFW(const vespalib::string &fieldName, const StructFieldsResolver& fields_resolver, diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.cpp index bf5578f38d6..2bd7f31d110 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.cpp @@ -55,7 +55,7 @@ AttributeCombinerDFW::create(const vespalib::string &fieldName, IAttributeContex } void -AttributeCombinerDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType, vespalib::slime::Inserter &target) +AttributeCombinerDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType, vespalib::slime::Inserter &target) const { auto& fieldWriterState = state->_fieldWriterStates[_stateIndex]; if (!fieldWriterState) { diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.h b/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.h index 39f2d498c5b..c7a390fa988 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.h @@ -32,14 +32,14 @@ protected: AttributeCombinerDFW(const vespalib::string &fieldName, bool filter_elements, std::shared_ptr<MatchingElementsFields> matching_elems_fields); protected: - virtual DocsumFieldWriterState* allocFieldWriterState(search::attribute::IAttributeContext &context, vespalib::Stash& stash, const MatchingElements* matching_elements) = 0; + virtual DocsumFieldWriterState* allocFieldWriterState(search::attribute::IAttributeContext &context, vespalib::Stash& stash, const MatchingElements* matching_elements) const = 0; public: ~AttributeCombinerDFW() override; bool IsGenerated() const override; bool setFieldWriterStateIndex(uint32_t fieldWriterStateIndex) override; static std::unique_ptr<DocsumFieldWriter> create(const vespalib::string &fieldName, search::attribute::IAttributeContext &attrCtx, bool filter_elements, std::shared_ptr<MatchingElementsFields> matching_elems_fields); - void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) override; + void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const override; }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp index e7b6acec646..70e2221c959 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp @@ -65,14 +65,14 @@ public: explicit SingleAttrDFW(const vespalib::string & attrName) : AttrDFW(attrName) { } - void insertField(uint32_t docid, GetDocsumsState *state, ResType type, Inserter &target) override; + void insertField(uint32_t docid, GetDocsumsState *state, ResType type, Inserter &target) const override; bool isDefaultValue(uint32_t docid, const GetDocsumsState * state) const override { return get_attribute(*state).isUndefined(docid); } }; void -SingleAttrDFW::insertField(uint32_t docid, GetDocsumsState * state, ResType type, Inserter &target) +SingleAttrDFW::insertField(uint32_t docid, GetDocsumsState * state, ResType type, Inserter &target) const { const auto& v = get_attribute(*state); switch (type) { @@ -290,7 +290,7 @@ public: } } bool setFieldWriterStateIndex(uint32_t fieldWriterStateIndex) override; - void insertField(uint32_t docid, GetDocsumsState* state, ResType type, Inserter& target) override; + void insertField(uint32_t docid, GetDocsumsState* state, ResType type, Inserter& target) const override; }; bool @@ -338,7 +338,7 @@ make_field_writer_state(const vespalib::string& field_name, const IAttributeVect } void -MultiAttrDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType, vespalib::slime::Inserter &target) +MultiAttrDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType, vespalib::slime::Inserter &target) const { auto& field_writer_state = state->_fieldWriterStates[_state_index]; if (!field_writer_state) { diff --git a/searchsummary/src/vespa/searchsummary/docsummary/copy_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/copy_dfw.cpp index af039820c4e..da31e338036 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/copy_dfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/copy_dfw.cpp @@ -34,7 +34,7 @@ CopyDFW::Init(const ResultConfig & config, const char *inputField) void CopyDFW::insertField(uint32_t, const IDocsumStoreDocument* doc, GetDocsumsState *, ResType, - vespalib::slime::Inserter &target) + vespalib::slime::Inserter &target) const { if (doc != nullptr) { doc->insert_summary_field(_input_field_name, target); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/copy_dfw.h b/searchsummary/src/vespa/searchsummary/docsummary/copy_dfw.h index f679863ccc4..91cf2c91bb8 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/copy_dfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/copy_dfw.h @@ -25,7 +25,7 @@ public: bool IsGenerated() const override { return false; } void insertField(uint32_t docid, const IDocsumStoreDocument* doc, GetDocsumsState *state, ResType type, - vespalib::slime::Inserter &target) override; + vespalib::slime::Inserter &target) const override; }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer.h b/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer.h index 455b38f87fd..8bce30caf52 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer.h @@ -27,7 +27,7 @@ public: return ResTypeUtils::IsRuntimeCompatible(a, b); } virtual bool IsGenerated() const = 0; - virtual void insertField(uint32_t docid, const IDocsumStoreDocument* doc, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) = 0; + virtual void insertField(uint32_t docid, const IDocsumStoreDocument* doc, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const = 0; virtual const vespalib::string & getAttributeName() const; virtual bool isDefaultValue(uint32_t docid, const GetDocsumsState * state) const; void setIndex(size_t v) { _index = v; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp index ddb1c5a164a..c4090044e18 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp @@ -124,7 +124,7 @@ DynamicDocsumConfig::configure(const vespa::config::search::SummarymapConfig &cf bool rc(false); std::unique_ptr<DocsumFieldWriter> fieldWriter = createFieldWriter(o.field, o.command, o.arguments, rc, matching_elems_fields); if (rc && fieldWriter) { - rc = _writer->Override(o.field.c_str(), fieldWriter.release()); // OBJECT HAND-OVER + rc = _writer->Override(o.field.c_str(), std::move(fieldWriter)); // OBJECT HAND-OVER } if (!rc) { throw IllegalArgumentException(o.command + " override operation failed during initialization"); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp index c7dceb6914d..df9925bf9b7 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp @@ -75,7 +75,7 @@ DynamicDocsumWriter::insertDocsum(const ResolveClassInfo & rci, uint32_t docid, vespalib::slime::Cursor & docsum = topInserter.insertObject(); for (uint32_t i = 0; i < rci.outputClass->GetNumEntries(); ++i) { const ResConfigEntry *resCfg = rci.outputClass->GetEntry(i); - DocsumFieldWriter *writer = _overrideTable[resCfg->_enumValue]; + const DocsumFieldWriter *writer = _overrideTable[resCfg->_enumValue].get(); if (! writer->isDefaultValue(docid, state)) { const Memory field_name(resCfg->_bindname.data(), resCfg->_bindname.size()); ObjectInserter inserter(docsum, field_name); @@ -89,7 +89,7 @@ DynamicDocsumWriter::insertDocsum(const ResolveClassInfo & rci, uint32_t docid, vespalib::slime::Cursor & docsum = topInserter.insertObject(); for (uint32_t i = 0; i < rci.outputClass->GetNumEntries(); ++i) { const ResConfigEntry *outCfg = rci.outputClass->GetEntry(i); - DocsumFieldWriter *writer = _overrideTable[outCfg->_enumValue]; + const DocsumFieldWriter *writer = _overrideTable[outCfg->_enumValue].get(); const Memory field_name(outCfg->_bindname.data(), outCfg->_bindname.size()); ObjectInserter inserter(docsum, field_name); if (writer != nullptr) { @@ -105,52 +105,31 @@ DynamicDocsumWriter::insertDocsum(const ResolveClassInfo & rci, uint32_t docid, } } -DynamicDocsumWriter::DynamicDocsumWriter( ResultConfig *config, KeywordExtractor *extractor) - : _resultConfig(config), - _keywordExtractor(extractor), - _numClasses(config->GetNumResultClasses()), - _numEnumValues(config->GetFieldNameEnum().GetNumEntries()), +DynamicDocsumWriter::DynamicDocsumWriter(std::unique_ptr<ResultConfig> config, std::unique_ptr<KeywordExtractor> extractor) + : _resultConfig(std::move(config)), + _keywordExtractor(std::move(extractor)), + _numClasses(_resultConfig->GetNumResultClasses()), + _numEnumValues(_resultConfig->GetFieldNameEnum().GetNumEntries()), _numFieldWriterStates(0), - _classInfoTable(nullptr), - _overrideTable(nullptr) + _classInfoTable(_numClasses), + _overrideTable(_numEnumValues) { - LOG_ASSERT(config != nullptr); - _classInfoTable = new ResultClass::DynamicInfo[_numClasses]; - _overrideTable = new DocsumFieldWriter*[_numEnumValues]; - uint32_t i = 0; - for (ResultConfig::iterator it(config->begin()), mt(config->end()); it != mt; it++, i++) { - _classInfoTable[i]._overrideCnt = 0; - _classInfoTable[i]._generateCnt = 0; + for (ResultConfig::iterator it(_resultConfig->begin()), mt(_resultConfig->end()); it != mt; it++, i++) { it->setDynamicInfo(&(_classInfoTable[i])); } LOG_ASSERT(i == _numClasses); - - for (i = 0; i < _numEnumValues; i++) - _overrideTable[i] = nullptr; } -DynamicDocsumWriter::~DynamicDocsumWriter() -{ - delete _resultConfig; - delete _keywordExtractor; - - delete [] _classInfoTable; - - for (uint32_t i = 0; i < _numEnumValues; i++) - delete _overrideTable[i]; - delete [] _overrideTable; - -} +DynamicDocsumWriter::~DynamicDocsumWriter() = default; bool -DynamicDocsumWriter::Override(const char *fieldName, DocsumFieldWriter *writer) +DynamicDocsumWriter::Override(const char *fieldName, std::unique_ptr<DocsumFieldWriter> writer) { uint32_t fieldEnumValue = _resultConfig->GetFieldNameEnum().Lookup(fieldName); - if (fieldEnumValue >= _numEnumValues || - _overrideTable[fieldEnumValue] != nullptr) + if (fieldEnumValue >= _numEnumValues || _overrideTable[fieldEnumValue]) { if (fieldEnumValue >= _numEnumValues) { @@ -158,13 +137,13 @@ DynamicDocsumWriter::Override(const char *fieldName, DocsumFieldWriter *writer) } else if (_overrideTable[fieldEnumValue] != nullptr) { LOG(warning, "cannot override docsum field '%s'; already overridden", fieldName); } - delete writer; return false; } writer->setIndex(fieldEnumValue); - _overrideTable[fieldEnumValue] = writer; - if (writer->setFieldWriterStateIndex(_numFieldWriterStates)) { + auto writer_ptr = writer.get(); + _overrideTable[fieldEnumValue] = std::move(writer); + if (writer_ptr->setFieldWriterStateIndex(_numFieldWriterStates)) { ++_numFieldWriterStates; } @@ -173,7 +152,7 @@ DynamicDocsumWriter::Override(const char *fieldName, DocsumFieldWriter *writer) if (result_class.GetIndexFromEnumValue(fieldEnumValue) >= 0) { ResultClass::DynamicInfo *info = result_class.getDynamicInfo(); info->_overrideCnt++; - if (writer->IsGenerated()) + if (writer_ptr->IsGenerated()) info->_generateCnt++; } } @@ -185,12 +164,12 @@ DynamicDocsumWriter::Override(const char *fieldName, DocsumFieldWriter *writer) void DynamicDocsumWriter::InitState(IAttributeManager & attrMan, GetDocsumsState *state) { - state->_kwExtractor = _keywordExtractor; + state->_kwExtractor = _keywordExtractor.get(); state->_attrCtx = attrMan.createContext(); state->_attributes.resize(_numEnumValues); state->_fieldWriterStates.resize(_numFieldWriterStates); for (size_t i(0); i < state->_attributes.size(); i++) { - const DocsumFieldWriter *fw = _overrideTable[i]; + const DocsumFieldWriter *fw = _overrideTable[i].get(); if (fw) { const vespalib::string & attributeName = fw->getAttributeName(); if (!attributeName.empty()) { diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h index db7239ce503..0833970047d 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h @@ -52,25 +52,25 @@ public: class DynamicDocsumWriter : public IDocsumWriter { private: - ResultConfig *_resultConfig; - KeywordExtractor *_keywordExtractor; - uint32_t _numClasses; - uint32_t _numEnumValues; - uint32_t _numFieldWriterStates; - ResultClass::DynamicInfo *_classInfoTable; - DocsumFieldWriter** _overrideTable; + std::unique_ptr<ResultConfig> _resultConfig; + std::unique_ptr<KeywordExtractor> _keywordExtractor; + uint32_t _numClasses; + uint32_t _numEnumValues; + uint32_t _numFieldWriterStates; + std::vector<ResultClass::DynamicInfo> _classInfoTable; + std::vector<std::unique_ptr<const DocsumFieldWriter>> _overrideTable; ResolveClassInfo resolveOutputClass(vespalib::stringref outputClassName) const; public: - DynamicDocsumWriter(ResultConfig *config, KeywordExtractor *extractor); + DynamicDocsumWriter(std::unique_ptr<ResultConfig> config, std::unique_ptr<KeywordExtractor> extractor); DynamicDocsumWriter(const DynamicDocsumWriter &) = delete; DynamicDocsumWriter& operator=(const DynamicDocsumWriter &) = delete; ~DynamicDocsumWriter() override; - ResultConfig *GetResultConfig() { return _resultConfig; } + const ResultConfig *GetResultConfig() { return _resultConfig.get(); } - bool Override(const char *fieldName, DocsumFieldWriter *writer); + bool Override(const char *fieldName, std::unique_ptr<DocsumFieldWriter> writer); void InitState(search::IAttributeManager & attrMan, GetDocsumsState *state) override; uint32_t WriteDocsum(uint32_t docid, GetDocsumsState *state, IDocsumStore *docinfos, search::RawBuf *target) override; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/document_id_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/document_id_dfw.cpp index 725e156798b..a4b162ff1e8 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/document_id_dfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/document_id_dfw.cpp @@ -19,7 +19,7 @@ DocumentIdDFW::IsGenerated() const void DocumentIdDFW::insertField(uint32_t, const IDocsumStoreDocument* doc, GetDocsumsState *, ResType, - vespalib::slime::Inserter &target) + vespalib::slime::Inserter &target) const { if (doc != nullptr) { doc->insert_document_id(target); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/document_id_dfw.h b/searchsummary/src/vespa/searchsummary/docsummary/document_id_dfw.h index b1323489026..e7236b454cd 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/document_id_dfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/document_id_dfw.h @@ -16,7 +16,7 @@ public: DocumentIdDFW(); ~DocumentIdDFW() override; bool IsGenerated() const override; - void insertField(uint32_t docid, const IDocsumStoreDocument* doc, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) override; + void insertField(uint32_t docid, const IDocsumStoreDocument* doc, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const override; }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp index f1a768775cb..b3278724ff7 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp @@ -335,7 +335,7 @@ JuniperTeaserDFW::Init( } vespalib::string -DynamicTeaserDFW::makeDynamicTeaser(uint32_t docid, vespalib::stringref input, GetDocsumsState *state) +DynamicTeaserDFW::makeDynamicTeaser(uint32_t docid, vespalib::stringref input, GetDocsumsState *state) const { if (!state->_dynteaser._query) { JuniperQueryAdapter iq(state->_kwExtractor, @@ -387,7 +387,7 @@ DynamicTeaserDFW::makeDynamicTeaser(uint32_t docid, vespalib::stringref input, G void DynamicTeaserDFW::insertField(uint32_t docid, const IDocsumStoreDocument* doc, GetDocsumsState *state, ResType, - vespalib::slime::Inserter &target) + vespalib::slime::Inserter &target) const { if (doc != nullptr) { auto input = doc->get_juniper_input(_input_field_name); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/empty_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/empty_dfw.cpp index 3d3b1e11626..37d2785ffa7 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/empty_dfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/empty_dfw.cpp @@ -9,7 +9,7 @@ EmptyDFW::EmptyDFW() = default; EmptyDFW::~EmptyDFW() = default; void -EmptyDFW::insertField(uint32_t, GetDocsumsState *, ResType, vespalib::slime::Inserter &target) +EmptyDFW::insertField(uint32_t, GetDocsumsState *, ResType, vespalib::slime::Inserter &target) const { // insert explicitly-empty field? // target.insertNix(); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/empty_dfw.h b/searchsummary/src/vespa/searchsummary/docsummary/empty_dfw.h index d43eed8e9c6..9a250450b1f 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/empty_dfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/empty_dfw.h @@ -16,7 +16,7 @@ public: ~EmptyDFW() override; bool IsGenerated() const override { return true; } - void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) override; + void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const override; }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp index c3806d6e7ea..975fd7f0a6a 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp @@ -55,7 +55,7 @@ void fmtZcurve(int64_t zval, vespalib::slime::Inserter &target, bool useV8geoPos } void -GeoPositionDFW::insertField(uint32_t docid, GetDocsumsState * dsState, ResType, vespalib::slime::Inserter &target) +GeoPositionDFW::insertField(uint32_t docid, GetDocsumsState * dsState, ResType, vespalib::slime::Inserter &target) const { using vespalib::slime::Cursor; using vespalib::slime::ObjectSymbolInserter; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h index 5dcee853304..db43592c0b4 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h @@ -16,7 +16,7 @@ private: public: typedef std::unique_ptr<GeoPositionDFW> UP; GeoPositionDFW(const vespalib::string & attrName, bool useV8geoPositions); - void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) override; + void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const override; static UP create(const char *attribute_name, IAttributeManager *attribute_manager, bool useV8geoPositions); }; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/juniperdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/juniperdfw.h index b4cc79ef205..631ed374df2 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/juniperdfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/juniperdfw.h @@ -49,12 +49,12 @@ class DynamicTeaserDFW : public JuniperTeaserDFW { vespalib::string makeDynamicTeaser(uint32_t docid, vespalib::stringref input, - GetDocsumsState *state); + GetDocsumsState *state) const; public: DynamicTeaserDFW(juniper::Juniper * juniper) : JuniperTeaserDFW(juniper) { } void insertField(uint32_t docid, const IDocsumStoreDocument* doc, GetDocsumsState *state, - ResType type, vespalib::slime::Inserter &target) override; + ResType type, vespalib::slime::Inserter &target) const override; }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/matched_elements_filter_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/matched_elements_filter_dfw.cpp index 9011ca036b4..c91e0c2dc7e 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/matched_elements_filter_dfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/matched_elements_filter_dfw.cpp @@ -86,7 +86,7 @@ filter_matching_elements_in_input_field_while_converting_to_slime(const FieldVal void MatchedElementsFilterDFW::insertField(uint32_t docid, const IDocsumStoreDocument* doc, GetDocsumsState *state, - ResType type, vespalib::slime::Inserter& target) + ResType type, vespalib::slime::Inserter& target) const { assert(type == ResType::RES_JSONSTRING); auto field_value = doc->get_field_value(_input_field_name); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/matched_elements_filter_dfw.h b/searchsummary/src/vespa/searchsummary/docsummary/matched_elements_filter_dfw.h index c47ca0b21b1..7129f8af1de 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/matched_elements_filter_dfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/matched_elements_filter_dfw.h @@ -36,7 +36,7 @@ public: ~MatchedElementsFilterDFW(); bool IsGenerated() const override { return false; } void insertField(uint32_t docid, const IDocsumStoreDocument* doc, GetDocsumsState *state, - ResType type, vespalib::slime::Inserter& target) override; + ResType type, vespalib::slime::Inserter& target) const override; }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp index 7f3a929a62f..327c407af69 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp @@ -34,7 +34,7 @@ using search::common::Location; using search::common::GeoGcd; LocationAttrDFW::AllLocations -LocationAttrDFW::getAllLocations(GetDocsumsState *state) +LocationAttrDFW::getAllLocations(GetDocsumsState *state) const { AllLocations retval; if (! state->_args.locations_possible()) { @@ -67,7 +67,7 @@ AbsDistanceDFW::AbsDistanceDFW(const vespalib::string & attrName) uint64_t AbsDistanceDFW::findMinDistance(uint32_t docid, GetDocsumsState *state, - const std::vector<const GeoLoc *> &locations) + const std::vector<const GeoLoc *> &locations) const { // ensure result fits in Java "int" uint64_t absdist = std::numeric_limits<int32_t>::max(); @@ -92,7 +92,7 @@ AbsDistanceDFW::findMinDistance(uint32_t docid, GetDocsumsState *state, } void -AbsDistanceDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) +AbsDistanceDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const { const auto & all_locations = getAllLocations(state); if (all_locations.empty()) { @@ -237,7 +237,7 @@ void insertV8FromAttr(const attribute::IAttributeVector &attribute, uint32_t doc } // namespace void -PositionsDFW::insertField(uint32_t docid, GetDocsumsState * dsState, ResType type, vespalib::slime::Inserter &target) +PositionsDFW::insertField(uint32_t docid, GetDocsumsState * dsState, ResType type, vespalib::slime::Inserter &target) const { checkExpected(type); if (_useV8geoPositions) { diff --git a/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h index d9445abd2ff..9924f9aa16c 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h @@ -30,20 +30,20 @@ public: return matching.empty() ? other : matching; } }; - AllLocations getAllLocations(GetDocsumsState *state); + AllLocations getAllLocations(GetDocsumsState *state) const; }; class AbsDistanceDFW : public LocationAttrDFW { private: uint64_t findMinDistance(uint32_t docid, GetDocsumsState *state, - const std::vector<const GeoLoc *> &locations); + const std::vector<const GeoLoc *> &locations) const; public: AbsDistanceDFW(const vespalib::string & attrName); bool IsGenerated() const override { return true; } void insertField(uint32_t docid, GetDocsumsState *state, - ResType type, vespalib::slime::Inserter &target) override; + ResType type, vespalib::slime::Inserter &target) const override; static std::unique_ptr<DocsumFieldWriter> create(const char *attribute_name, IAttributeManager *index_man); @@ -59,7 +59,7 @@ public: typedef std::unique_ptr<PositionsDFW> UP; PositionsDFW(const vespalib::string & attrName, bool useV8geoPositions); bool IsGenerated() const override { return true; } - void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) override; + void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const override; static UP create(const char *attribute_name, IAttributeManager *index_man, bool useV8geoPositions); }; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp index 5d3b104189b..5b08020c010 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp @@ -15,7 +15,7 @@ RankFeaturesDFW::~RankFeaturesDFW() = default; void RankFeaturesDFW::insertField(uint32_t docid, GetDocsumsState *state, - ResType, vespalib::slime::Inserter &target) + ResType, vespalib::slime::Inserter &target) const { if ( !state->_rankFeatures ) { state->_callback.FillRankFeatures(state, _env); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h index 91f9e80d303..d0516f9f0b7 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h @@ -19,7 +19,7 @@ public: RankFeaturesDFW & operator=(const RankFeaturesDFW &) = delete; ~RankFeaturesDFW() override; bool IsGenerated() const override { return true; } - void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) override; + void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const override; }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h index 555d518b799..123aa0396ba 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h @@ -33,6 +33,11 @@ public: { uint32_t _overrideCnt; // # fields overridden uint32_t _generateCnt; // # fields generated + DynamicInfo() noexcept + : _overrideCnt(0), + _generateCnt(0) + { + } }; private: diff --git a/searchsummary/src/vespa/searchsummary/docsummary/simple_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/simple_dfw.cpp index 238bb512852..01e306161e7 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/simple_dfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/simple_dfw.cpp @@ -5,7 +5,7 @@ namespace search::docsummary { void -SimpleDFW::insertField(uint32_t docid, const IDocsumStoreDocument *, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) +SimpleDFW::insertField(uint32_t docid, const IDocsumStoreDocument *, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const { insertField(docid, state, type, target); } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/simple_dfw.h b/searchsummary/src/vespa/searchsummary/docsummary/simple_dfw.h index 20ec4ef2e82..52a45754c1f 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/simple_dfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/simple_dfw.h @@ -13,8 +13,8 @@ namespace search::docsummary { class SimpleDFW : public DocsumFieldWriter { public: - virtual void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) = 0; - void insertField(uint32_t docid, const IDocsumStoreDocument*, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) override; + virtual void insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const = 0; + void insertField(uint32_t docid, const IDocsumStoreDocument*, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target) const override; }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.cpp index 38a9cc8c50b..2eb79b720ad 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.cpp @@ -139,7 +139,7 @@ StructMapAttributeCombinerDFW::StructMapAttributeCombinerDFW(const vespalib::str StructMapAttributeCombinerDFW::~StructMapAttributeCombinerDFW() = default; DocsumFieldWriterState* -StructMapAttributeCombinerDFW::allocFieldWriterState(IAttributeContext &context, vespalib::Stash& stash, const MatchingElements* matching_elements) +StructMapAttributeCombinerDFW::allocFieldWriterState(IAttributeContext &context, vespalib::Stash& stash, const MatchingElements* matching_elements) const { return &stash.create<StructMapAttributeFieldWriterState>(_keyAttributeName, _valueFields, _valueAttributeNames, context, stash, _fieldName, matching_elements); } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.h b/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.h index 74ba61dce14..0665b398a57 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.h @@ -21,7 +21,7 @@ class StructMapAttributeCombinerDFW : public AttributeCombinerDFW std::vector<vespalib::string> _valueFields; std::vector<vespalib::string> _valueAttributeNames; - DocsumFieldWriterState* allocFieldWriterState(search::attribute::IAttributeContext &context, vespalib::Stash& stash, const MatchingElements* matching_elements) override; + DocsumFieldWriterState* allocFieldWriterState(search::attribute::IAttributeContext &context, vespalib::Stash& stash, const MatchingElements* matching_elements) const override; public: StructMapAttributeCombinerDFW(const vespalib::string &fieldName, const StructFieldsResolver& fields_resolver, diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp index c28e986612c..f5fc942e40c 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp @@ -21,7 +21,7 @@ SummaryFeaturesDFW::~SummaryFeaturesDFW() = default; static vespalib::Memory _M_cached("vespa.summaryFeatures.cached"); void -SummaryFeaturesDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType, vespalib::slime::Inserter &target) +SummaryFeaturesDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType, vespalib::slime::Inserter &target) const { if (state->_omit_summary_features) { return; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h index d12feb69182..45d7f7fa641 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h @@ -20,7 +20,7 @@ public: ~SummaryFeaturesDFW() override; bool IsGenerated() const override { return true; } void insertField(uint32_t docid, GetDocsumsState *state, - ResType type, vespalib::slime::Inserter &target) override; + ResType type, vespalib::slime::Inserter &target) const override; }; } |