summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahooinc.com>2022-08-26 15:50:04 +0200
committerGitHub <noreply@github.com>2022-08-26 15:50:04 +0200
commit566b2a3737227334f6244a9b9fbe6f09f82ed367 (patch)
tree542a46dace333d3b074c196d9fd7bd2e7ba9e09a
parent11500c16b83888cab1ff4762c2fb3f9ef2d0e164 (diff)
parentfc697cd7eb9d75fc18034c3b6def0d06eb3c86b7 (diff)
Merge pull request #23807 from vespa-engine/toregge/use-smart-pointers-in-search-docsummary-dynamicdosumwriter
Use smart pointers in search::docsummary::DynamicDocsumWriter.
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h2
-rw-r--r--searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp4
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.h4
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp8
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/copy_dfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/copy_dfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp59
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h20
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/document_id_dfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/document_id_dfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp4
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/empty_dfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/empty_dfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/juniperdfw.h4
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/matched_elements_filter_dfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/matched_elements_filter_dfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp8
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h8
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultclass.h5
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/simple_dfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/simple_dfw.h4
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h2
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp2
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.h2
38 files changed, 83 insertions, 99 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h b/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h
index bf064a707fe..e3c4705104f 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h
@@ -34,7 +34,7 @@ public:
virtual ~ISummarySetup() {}
virtual search::docsummary::IDocsumWriter &getDocsumWriter() const = 0;
- virtual search::docsummary::ResultConfig &getResultConfig() = 0;
+ virtual const search::docsummary::ResultConfig &getResultConfig() = 0;
virtual search::docsummary::IDocsumStore::UP createDocsumStore() = 0;
// Inherit doc from IDocsumEnvironment
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp
index 34960d9707d..18c84038f9b 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp
@@ -102,7 +102,7 @@ SummarySetup(const vespalib::string & baseDir, const SummaryConfig & summaryCfg,
}
_juniperConfig = std::make_unique<juniper::Juniper>(&_juniperProps, _wordFolder.get());
- _docsumWriter = std::make_unique<DynamicDocsumWriter>(resultConfig.release(), nullptr);
+ _docsumWriter = std::make_unique<DynamicDocsumWriter>(std::move(resultConfig), std::unique_ptr<KeywordExtractor>());
DynamicDocsumConfig dynCfg(this, _docsumWriter.get());
dynCfg.configure(summarymapCfg);
}
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h
index 36808acd86c..0fd45bb28fb 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h
@@ -39,7 +39,7 @@ public:
std::shared_ptr<const document::DocumentTypeRepo> repo);
search::docsummary::IDocsumWriter & getDocsumWriter() const override { return *_docsumWriter; }
- search::docsummary::ResultConfig & getResultConfig() override { return *_docsumWriter->GetResultConfig(); }
+ const search::docsummary::ResultConfig & getResultConfig() override { return *_docsumWriter->GetResultConfig(); }
search::docsummary::IDocsumStore::UP createDocsumStore() override;
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;
};
}
diff --git a/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp b/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp
index d4f470d9c47..e7532d2a25a 100644
--- a/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp
+++ b/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp
@@ -147,7 +147,7 @@ VSMAdapter::configure(const VSMConfigSnapshot & snapshot)
LOG(debug, "index highlight spec: '%s'", spec.c_str());
// create dynamic docsum writer
- auto writer = std::make_unique<DynamicDocsumWriter>(resCfg.release(), kwExtractor.release());
+ auto writer = std::make_unique<DynamicDocsumWriter>(std::move(resCfg), std::move(kwExtractor));
// configure juniper (used when configuring DynamicDocsumConfig)
_juniperProps = std::make_unique<JuniperProperties>(*juniperrc);
diff --git a/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.h b/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.h
index 6484269353b..656ab2e8fc6 100644
--- a/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.h
+++ b/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.h
@@ -80,7 +80,7 @@ public:
DocsumTools(std::unique_ptr<DynamicDocsumWriter> writer);
~DocsumTools();
void setJuniper(std::unique_ptr<juniper::Juniper> juniper) { _juniper = std::move(juniper); }
- ResultConfig *getResultConfig() const { return _writer->GetResultConfig(); }
+ const ResultConfig *getResultConfig() const { return _writer->GetResultConfig(); }
DynamicDocsumWriter *getDocsumWriter() const { return _writer.get(); }
const ResultClass *getResultClass() const { return _resultClass; }
const std::vector<FieldSpec> & getFieldSpecs() const { return _fieldSpecs; }