diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-09-01 22:01:24 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-09-01 22:01:24 +0200 |
commit | aad2751c1a4c3c07cc799b4579e8fbc86af750b3 (patch) | |
tree | f24129f53cfa01fcb70ba18a4ebfcb455b8b3b36 /searchsummary/src | |
parent | ce4c8520cf3adca83805eeb02178c136f82c0acb (diff) |
Move DynamicInfo instance into search::docsummary::ResultClass instance.
Diffstat (limited to 'searchsummary/src')
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 |