summaryrefslogtreecommitdiffstats
path: root/searchsummary/src
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2022-09-01 22:01:24 +0200
committerTor Egge <Tor.Egge@online.no>2022-09-01 22:01:24 +0200
commitaad2751c1a4c3c07cc799b4579e8fbc86af750b3 (patch)
treef24129f53cfa01fcb70ba18a4ebfcb455b8b3b36 /searchsummary/src
parentce4c8520cf3adca83805eeb02178c136f82c0acb (diff)
Move DynamicInfo instance into search::docsummary::ResultClass instance.
Diffstat (limited to 'searchsummary/src')
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp18
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h1
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultclass.h25
4 files changed, 17 insertions, 29 deletions
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
index 18371970722..940170b54f7 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
@@ -37,9 +37,9 @@ DynamicDocsumWriter::resolveOutputClass(vespalib::stringref summaryClass) const
Issue::report("Illegal docsum class requested: %s, using empty docsum for documents",
vespalib::string(summaryClass).c_str());
} else {
- const ResultClass::DynamicInfo *rcInfo = oC->getDynamicInfo();
- if (rcInfo->_generateCnt == oC->GetNumEntries()) {
- LOG_ASSERT(rcInfo->_overrideCnt == rcInfo->_generateCnt);
+ const ResultClass::DynamicInfo &rcInfo = oC->getDynamicInfo();
+ if (rcInfo._generateCnt == oC->GetNumEntries()) {
+ LOG_ASSERT(rcInfo._overrideCnt == rcInfo._generateCnt);
result.allGenerated = true;
}
}
@@ -97,14 +97,8 @@ DynamicDocsumWriter::DynamicDocsumWriter(std::unique_ptr<ResultConfig> config, s
: _resultConfig(std::move(config)),
_keywordExtractor(std::move(extractor)),
_numFieldWriterStates(0),
- _classInfoTable(_resultConfig->GetNumResultClasses()),
_overrideTable(_resultConfig->GetFieldNameEnum().GetNumEntries())
{
- uint32_t i = 0;
- for (auto & result_class : *_resultConfig) {
- result_class.setDynamicInfo(&(_classInfoTable[i++]));
- }
- LOG_ASSERT(i == _resultConfig->GetNumResultClasses());
}
@@ -131,12 +125,10 @@ DynamicDocsumWriter::Override(const char *fieldName, std::unique_ptr<DocsumField
++_numFieldWriterStates;
}
+ bool generated = writer_ptr->IsGenerated();
for (auto & result_class : *_resultConfig) {
if (result_class.GetIndexFromEnumValue(fieldEnumValue) >= 0) {
- ResultClass::DynamicInfo *info = result_class.getDynamicInfo();
- info->_overrideCnt++;
- if (writer_ptr->IsGenerated())
- info->_generateCnt++;
+ result_class.getDynamicInfo().update_override_counts(generated);
}
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
index f9c5a5ff7cf..9ae44623475 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
@@ -50,7 +50,6 @@ private:
std::unique_ptr<ResultConfig> _resultConfig;
std::unique_ptr<KeywordExtractor> _keywordExtractor;
uint32_t _numFieldWriterStates;
- std::vector<ResultClass::DynamicInfo> _classInfoTable;
std::vector<std::unique_ptr<const DocsumFieldWriter>> _overrideTable;
ResolveClassInfo resolveOutputClass(vespalib::stringref outputClassName) const;
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp
index b648d363d87..9930c39cb7b 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp
@@ -13,7 +13,7 @@ ResultClass::ResultClass(const char *name, util::StringEnum & fieldEnum)
_nameMap(),
_fieldEnum(fieldEnum),
_enumMap(),
- _dynInfo(nullptr),
+ _dynInfo(),
_omit_summary_features(false)
{ }
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h
index 7fb94f48ac3..39e94e5050e 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h
@@ -27,6 +27,12 @@ public:
_generateCnt(0)
{
}
+ void update_override_counts(bool generated) noexcept {
+ ++_overrideCnt;
+ if (generated) {
+ ++_generateCnt;
+ }
+ }
};
private:
@@ -40,7 +46,7 @@ private:
NameIdMap _nameMap; // fieldname -> entry index
util::StringEnum &_fieldEnum; // fieldname -> f.n. enum value [SHARED]
std::vector<int> _enumMap; // fieldname enum value -> entry index
- DynamicInfo *_dynInfo; // fields overridden and generated
+ DynamicInfo _dynInfo; // fields overridden and generated
// Whether or not summary features should be omitted when filling this summary class.
// As default, summary features are always included.
bool _omit_summary_features;
@@ -62,22 +68,13 @@ public:
**/
~ResultClass();
-
- /**
- * Attach dynamic field data to this result class.
- *
- * @param data pointer to dynamic field data.
- **/
- void setDynamicInfo(DynamicInfo *data) { _dynInfo = data; }
-
-
/**
- * Obtain pointer to dynamic field data attached to this result class.
+ * Obtain reference to dynamic field data for this result class.
*
- * @return pointer to dynamic field data.
+ * @return reference to dynamic field data.
**/
- DynamicInfo *getDynamicInfo() const { return _dynInfo; }
-
+ DynamicInfo& getDynamicInfo() noexcept { return _dynInfo; }
+ const DynamicInfo& getDynamicInfo() const noexcept { return _dynInfo; }
/**
* Obtain the number of config entries (size of the