diff options
author | Tor Egge <Tor.Egge@yahoo-inc.com> | 2017-03-28 09:45:26 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@yahoo-inc.com> | 2017-03-28 09:45:26 +0000 |
commit | bf85beecbc790d974dcd031b7adc4d3d7c72f7fb (patch) | |
tree | 9df821a807e5d0c49ff08c9e30ddff8f941b5497 /searchlib | |
parent | 04843521de1c26ec01e01d6ff926d2704aa821cb (diff) |
Rename search::IAttributeSaveTarget::Config to
search::attribute::AttributeHeader.
Diffstat (limited to 'searchlib')
41 files changed, 228 insertions, 220 deletions
diff --git a/searchlib/src/tests/attribute/attributefilewriter/attributefilewriter_test.cpp b/searchlib/src/tests/attribute/attributefilewriter/attributefilewriter_test.cpp index 57d50ea9537..afba4287424 100644 --- a/searchlib/src/tests/attribute/attributefilewriter/attributefilewriter_test.cpp +++ b/searchlib/src/tests/attribute/attributefilewriter/attributefilewriter_test.cpp @@ -7,6 +7,7 @@ LOG_SETUP("attributefilewriter_test"); #include <vespa/vespalib/stllike/string.h> #include <vespa/searchlib/attribute/attributefilewriter.h> #include <vespa/searchlib/attribute/attributefilebufferwriter.h> +#include <vespa/searchlib/attribute/attribute_header.h> #include <vespa/searchlib/util/fileutil.h> #include <vespa/searchlib/util/rand48.h> #include <vespa/searchlib/common/tunefileinfo.h> @@ -29,18 +30,18 @@ void removeTestFile() { FastOS_File::Delete(testFileName.c_str()); } struct Fixture { TuneFileAttributes _tuneFileAttributes; DummyFileHeaderContext _fileHeaderContext; - IAttributeSaveTarget::Config _cfg; + attribute::AttributeHeader _header; const vespalib::string _desc; AttributeFileWriter _writer; Fixture() : _tuneFileAttributes(), _fileHeaderContext(), - _cfg(), + _header(), _desc("Attribute file sample description"), _writer(_tuneFileAttributes, _fileHeaderContext, - _cfg, + _header, _desc) { removeTestFile(); diff --git a/searchlib/src/vespa/searchlib/attribute/CMakeLists.txt b/searchlib/src/vespa/searchlib/attribute/CMakeLists.txt index e167dc38f22..e06514e3fc0 100644 --- a/searchlib/src/vespa/searchlib/attribute/CMakeLists.txt +++ b/searchlib/src/vespa/searchlib/attribute/CMakeLists.txt @@ -4,6 +4,7 @@ vespa_add_library(searchlib_attribute OBJECT address_space_usage.cpp attribute.cpp attribute_blueprint_factory.cpp + attribute_header.cpp attribute_weighted_set_blueprint.cpp attributecontext.cpp attributefactory.cpp diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_header.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_header.cpp new file mode 100644 index 00000000000..62a9780095e --- /dev/null +++ b/searchlib/src/vespa/searchlib/attribute/attribute_header.cpp @@ -0,0 +1,60 @@ +// Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include "attribute_header.h" + +namespace search { +namespace attribute { + +AttributeHeader::AttributeHeader() + : _fileName(""), + _basicType(""), + _collectionType(""), + _hasMultiValue(false), + _hasWeightedSetType(false), + _enumerated(false), + _predicateParams(), + _numDocs(0), + _fixedWidth(0), + _uniqueValueCount(0), + _totalValueCount(0), + _createSerialNum(0u), + _version(0) +{ +} + +AttributeHeader::AttributeHeader(const vespalib::string &fileName, + const vespalib::string &basicType, + const vespalib::string &collectionType, + const vespalib::string &tensorType, + bool multiValue, bool weightedSetType, + bool enumerated, + const attribute::PersistentPredicateParams &predicateParams, + uint32_t numDocs, + uint32_t fixedWidth, + uint64_t uniqueValueCount, + uint64_t totalValueCount, + uint64_t createSerialNum, + uint32_t version) + : _fileName(fileName), + _basicType(basicType), + _collectionType(collectionType), + _tensorType(tensorType), + _hasMultiValue(multiValue), + _hasWeightedSetType(weightedSetType), + _enumerated(enumerated), + _predicateParams(predicateParams), + _numDocs(numDocs), + _fixedWidth(fixedWidth), + _uniqueValueCount(uniqueValueCount), + _totalValueCount(totalValueCount), + _createSerialNum(createSerialNum), + _version(version) +{ +} + +AttributeHeader::~AttributeHeader() +{ +} + +} // namespace search::attribute +} // namespace search diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_header.h b/searchlib/src/vespa/searchlib/attribute/attribute_header.h new file mode 100644 index 00000000000..629336d0d69 --- /dev/null +++ b/searchlib/src/vespa/searchlib/attribute/attribute_header.h @@ -0,0 +1,64 @@ +// Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#pragma once + +#include <vespa/vespalib/stllike/string.h> +#include <vespa/searchcommon/attribute/predicate_params.h> + +namespace search { +namespace attribute { + +/** + * Attribute header class used by actual IAttributeTarget implementations. + **/ +class AttributeHeader { +private: + vespalib::string _fileName; + vespalib::string _basicType; + vespalib::string _collectionType; + vespalib::string _tensorType; + bool _hasMultiValue; + bool _hasWeightedSetType; + bool _enumerated; + attribute::PersistentPredicateParams _predicateParams; + uint32_t _numDocs; + uint32_t _fixedWidth; + uint64_t _uniqueValueCount; + uint64_t _totalValueCount; + uint64_t _createSerialNum; + uint32_t _version; +public: + AttributeHeader(); + AttributeHeader(const vespalib::string &fileName, + const vespalib::string &basicType, + const vespalib::string &collectionType, + const vespalib::string &tensorType, + bool multiValue, bool weightedSetType, + bool enumerated, + const attribute::PersistentPredicateParams &predicateParams, + uint32_t numDocs, + uint32_t fixedWidth, + uint64_t uniqueValueCount, + uint64_t totalValueCount, + uint64_t createSerialNum, + uint32_t version); + ~AttributeHeader(); + + const vespalib::string & getFileName() const { return _fileName; } + const vespalib::string & getBasicType() const { return _basicType; } + const vespalib::string &getCollectionType() const { return _collectionType; } + const vespalib::string &getTensorType() const { return _tensorType; } + bool hasMultiValue() const { return _hasMultiValue; } + bool hasWeightedSetType() const { return _hasWeightedSetType; } + uint32_t getNumDocs() const { return _numDocs; } + size_t getFixedWidth() const { return _fixedWidth; } + uint64_t getUniqueValueCount(void) const { return _uniqueValueCount; } + uint64_t getTotalValueCount(void) const { return _totalValueCount; } + bool getEnumerated(void) const { return _enumerated; } + uint64_t getCreateSerialNum(void) const { return _createSerialNum; } + uint32_t getVersion() const { return _version; } + const attribute::PersistentPredicateParams &getPredicateParams() const { return _predicateParams; } +}; + +} // namespace search::attribute +} // namespace search diff --git a/searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.cpp b/searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.cpp index c9a846d47df..ce77c3b8722 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.cpp @@ -23,13 +23,13 @@ AttributeFileSaveTarget:: AttributeFileSaveTarget(const TuneFileAttributes &tuneFileAttributes, const FileHeaderContext &fileHeaderContext) : IAttributeSaveTarget(), - _datWriter(tuneFileAttributes, fileHeaderContext, _cfg, + _datWriter(tuneFileAttributes, fileHeaderContext, _header, "Attribute vector data file"), - _idxWriter(tuneFileAttributes, fileHeaderContext, _cfg, + _idxWriter(tuneFileAttributes, fileHeaderContext, _header, "Attribute vector idx file"), - _weightWriter(tuneFileAttributes, fileHeaderContext, _cfg, + _weightWriter(tuneFileAttributes, fileHeaderContext, _header, "Attribute vector weight file"), - _udatWriter(tuneFileAttributes, fileHeaderContext, _cfg, + _udatWriter(tuneFileAttributes, fileHeaderContext, _header, "Attribute vector unique data file") { } @@ -40,23 +40,23 @@ AttributeFileSaveTarget::~AttributeFileSaveTarget() { bool AttributeFileSaveTarget::setup() { - const vespalib::string & baseFileName = _cfg.getFileName(); + const vespalib::string & baseFileName = _header.getFileName(); vespalib::string datFileName(baseFileName + ".dat"); if (!_datWriter.open(datFileName)) { return false; } - if (_cfg.getEnumerated()) { + if (_header.getEnumerated()) { vespalib::string udatFileName(baseFileName + ".udat"); if (!_udatWriter.open(udatFileName)) { return false; } } - if (_cfg.hasMultiValue()) { + if (_header.hasMultiValue()) { vespalib::string idxFileName(baseFileName + ".idx"); if (!_idxWriter.open(idxFileName)) { return false; } - if (_cfg.hasWeightedSetType()) { + if (_header.hasWeightedSetType()) { vespalib::string weightFileName(baseFileName + ".weight"); if (!_weightWriter.open(weightFileName)) { return false; diff --git a/searchlib/src/vespa/searchlib/attribute/attributefilewriter.cpp b/searchlib/src/vespa/searchlib/attribute/attributefilewriter.cpp index 53d5a9f7805..e81af876d57 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributefilewriter.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attributefilewriter.cpp @@ -5,6 +5,7 @@ #include <vespa/vespalib/data/fileheader.h> #include <vespa/searchlib/common/fileheadercontext.h> #include <vespa/searchlib/common/tunefileinfo.h> +#include "attribute_header.h" #include <vespa/fastos/file.h> #include <vespa/log/log.h> @@ -96,12 +97,12 @@ FileBackedBufferWriter::onFlush(size_t nowLen) { AttributeFileWriter:: AttributeFileWriter(const TuneFileAttributes &tuneFileAttributes, const FileHeaderContext &fileHeaderContext, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, const vespalib::string &desc) : _file(new FastOS_File()), _tuneFileAttributes(tuneFileAttributes), _fileHeaderContext(fileHeaderContext), - _cfg(cfg), + _header(header), _desc(desc), _fileBitSize(0) { } @@ -146,27 +147,27 @@ void AttributeFileWriter::addTags(vespalib::GenericHeader &header) { typedef vespalib::GenericHeader::Tag Tag; - header.putTag(Tag("datatype", _cfg.getBasicType())); - header.putTag(Tag("collectiontype", _cfg.getCollectionType())); - header.putTag(Tag("uniqueValueCount", _cfg.getUniqueValueCount())); - header.putTag(Tag("totalValueCount", _cfg.getTotalValueCount())); - header.putTag(Tag("docIdLimit", _cfg.getNumDocs())); + header.putTag(Tag("datatype", _header.getBasicType())); + header.putTag(Tag("collectiontype", _header.getCollectionType())); + header.putTag(Tag("uniqueValueCount", _header.getUniqueValueCount())); + header.putTag(Tag("totalValueCount", _header.getTotalValueCount())); + header.putTag(Tag("docIdLimit", _header.getNumDocs())); header.putTag(Tag("frozen", 0)); header.putTag(Tag("fileBitSize", 0)); - header.putTag(Tag("version", _cfg.getVersion())); - if (_cfg.getEnumerated()) { + header.putTag(Tag("version", _header.getVersion())); + if (_header.getEnumerated()) { header.putTag(Tag("enumerated", 1)); } - uint64_t createSerialNum = _cfg.getCreateSerialNum(); + uint64_t createSerialNum = _header.getCreateSerialNum(); if (createSerialNum != 0u) { header.putTag(Tag("createSerialNum", createSerialNum)); } - const vespalib::string &tensorType = _cfg.getTensorType(); + const vespalib::string &tensorType = _header.getTensorType(); if (!tensorType.empty()) { header.putTag(Tag("tensortype", tensorType));; } - if (_cfg.getBasicType() == "predicate") { - const auto & params = _cfg.getPredicateParams(); + if (_header.getBasicType() == "predicate") { + const auto & params = _header.getPredicateParams(); header.putTag(Tag("predicate.arity", params.arity())); header.putTag(Tag("predicate.lower_bound", params.lower_bound())); header.putTag(Tag("predicate.upper_bound", params.upper_bound())); diff --git a/searchlib/src/vespa/searchlib/attribute/attributefilewriter.h b/searchlib/src/vespa/searchlib/attribute/attributefilewriter.h index 5693b0be9d2..b431f7b6ae6 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributefilewriter.h +++ b/searchlib/src/vespa/searchlib/attribute/attributefilewriter.h @@ -2,8 +2,8 @@ #pragma once -#include "iattributesavetarget.h" #include "iattributefilewriter.h" +#include <vespa/vespalib/stllike/string.h> class FastOS_FileInterface; @@ -12,6 +12,7 @@ namespace vespalib { class GenericHeader; } namespace search { namespace common { class FileHeaderContext; } +namespace attribute { class AttributeHeader; } class TuneFileAttributes; @@ -24,7 +25,7 @@ class AttributeFileWriter : public IAttributeFileWriter std::unique_ptr<FastOS_FileInterface> _file; const TuneFileAttributes &_tuneFileAttributes; const search::common::FileHeaderContext &_fileHeaderContext; - const IAttributeSaveTarget::Config &_cfg; + const attribute::AttributeHeader &_header; vespalib::string _desc; uint64_t _fileBitSize; @@ -34,7 +35,7 @@ class AttributeFileWriter : public IAttributeFileWriter public: AttributeFileWriter(const TuneFileAttributes &tuneFileAttributes, const search::common::FileHeaderContext & fileHeaderContext, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, const vespalib::string &desc); ~AttributeFileWriter(); virtual Buffer allocBuf(size_t size) override; diff --git a/searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.cpp b/searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.cpp index cfc4061d4d5..41166c8b76b 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.cpp @@ -59,17 +59,17 @@ writeToFile(const TuneFileAttributes &tuneFileAttributes, const FileHeaderContext &fileHeaderContext) { AttributeFileSaveTarget saveTarget(tuneFileAttributes, fileHeaderContext); - saveTarget.setConfig(_cfg); + saveTarget.setHeader(_header); if (!saveTarget.setup()) { return false; } _datWriter.writeTo(saveTarget.datWriter()); - if (_cfg.getEnumerated()) { + if (_header.getEnumerated()) { _udatWriter.writeTo(saveTarget.udatWriter()); } - if (_cfg.hasMultiValue()) { + if (_header.hasMultiValue()) { _idxWriter.writeTo(saveTarget.idxWriter()); - if (_cfg.hasWeightedSetType()) { + if (_header.hasWeightedSetType()) { _weightWriter.writeTo(saveTarget.weightWriter()); } } diff --git a/searchlib/src/vespa/searchlib/attribute/attributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/attributesaver.cpp index 4d3649712d3..f00a14127aa 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributesaver.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attributesaver.cpp @@ -2,6 +2,7 @@ #include <vespa/fastos/fastos.h> #include "attributesaver.h" +#include "iattributesavetarget.h" using vespalib::GenerationHandler; @@ -10,9 +11,9 @@ namespace search { AttributeSaver::AttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg) + const attribute::AttributeHeader &header) : _guard(std::move(guard)), - _cfg(cfg) + _header(header) { } @@ -25,7 +26,7 @@ AttributeSaver::~AttributeSaver() bool AttributeSaver::save(IAttributeSaveTarget &saveTarget) { - saveTarget.setConfig(_cfg); + saveTarget.setHeader(_header); if (!saveTarget.setup()) { return false; } diff --git a/searchlib/src/vespa/searchlib/attribute/attributesaver.h b/searchlib/src/vespa/searchlib/attribute/attributesaver.h index 307239e113b..c9787cd923f 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributesaver.h +++ b/searchlib/src/vespa/searchlib/attribute/attributesaver.h @@ -3,11 +3,13 @@ #pragma once #include <vespa/vespalib/util/generationhandler.h> -#include "iattributesavetarget.h" +#include "attribute_header.h" namespace search { +class IAttributeSaveTarget; + /* * Abstract class used to hold data outside attribute vector needed * during a save operation, e.g. copy of data structure without @@ -18,11 +20,11 @@ class AttributeSaver { private: vespalib::GenerationHandler::Guard _guard; - IAttributeSaveTarget::Config _cfg; + attribute::AttributeHeader _header; protected: AttributeSaver(vespalib::GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg); + const attribute::AttributeHeader &header); virtual bool onSave(IAttributeSaveTarget &saveTarget) = 0; diff --git a/searchlib/src/vespa/searchlib/attribute/attributevector.cpp b/searchlib/src/vespa/searchlib/attribute/attributevector.cpp index babf0eceb3f..d3fe5345697 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributevector.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attributevector.cpp @@ -456,7 +456,7 @@ AttributeVector::save(IAttributeSaveTarget &saveTarget) return saver->save(saveTarget); } // New style save not available, use old style save - saveTarget.setConfig(createSaveTargetConfig()); + saveTarget.setHeader(createAttributeHeader()); if (!saveTarget.setup()) { return false; } @@ -465,9 +465,9 @@ AttributeVector::save(IAttributeSaveTarget &saveTarget) return true; } -IAttributeSaveTarget::Config -AttributeVector::createSaveTargetConfig() const { - return IAttributeSaveTarget::Config(getBaseFileName(), +attribute::AttributeHeader +AttributeVector::createAttributeHeader() const { + return attribute::AttributeHeader(getBaseFileName(), getConfig().basicType().asString(), getConfig().collectionType().asString(), getConfig().basicType().type() == BasicType::Type::TENSOR diff --git a/searchlib/src/vespa/searchlib/attribute/attributevector.h b/searchlib/src/vespa/searchlib/attribute/attributevector.h index 64a9cb0adf8..f313c77f581 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributevector.h +++ b/searchlib/src/vespa/searchlib/attribute/attributevector.h @@ -3,7 +3,6 @@ #pragma once #include "address_space_usage.h" -#include "iattributesavetarget.h" #include "changevector.h" #include <vespa/fastlib/text/normwordfolder.h> #include <vespa/searchcommon/attribute/config.h> @@ -46,6 +45,7 @@ namespace search { class AttributeWriteGuard; class AttributeSaver; class EnumStoreBase; + class IAttributeSaveTarget; class IDocumentWeightAttribute; class QueryTermSimple; class QueryTermBase; @@ -55,6 +55,7 @@ namespace search { } namespace attribute { + class AttributeHeader; class IPostingListSearchContext; class IPostingListAttributeBase; class Interlock; @@ -69,6 +70,7 @@ namespace search { namespace search { + using search::attribute::WeightedType; using search::attribute::Status; using document::ArithmeticValueUpdate; @@ -439,7 +441,7 @@ public: /** Saves this attribute vector using the given saveTarget **/ bool save(IAttributeSaveTarget & saveTarget); - IAttributeSaveTarget::Config createSaveTargetConfig() const; + attribute::AttributeHeader createAttributeHeader() const; /** Returns whether this attribute has load data files on disk **/ bool hasLoadData() const; diff --git a/searchlib/src/vespa/searchlib/attribute/attrvector.cpp b/searchlib/src/vespa/searchlib/attribute/attrvector.cpp index b1cd962b190..b59b3aa81d2 100644 --- a/searchlib/src/vespa/searchlib/attribute/attrvector.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attrvector.cpp @@ -7,6 +7,7 @@ #include <vespa/fastlib/io/bufferedfile.h> #include <vespa/searchlib/attribute/attrvector.h> #include <vespa/searchlib/util/filekit.h> +#include "iattributesavetarget.h" LOG_SETUP(".attrvector"); diff --git a/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.cpp b/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.cpp index ab9931a7fbf..e7221c0c401 100644 --- a/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.cpp +++ b/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.cpp @@ -7,9 +7,6 @@ LOG_SETUP(".searchlib.attribute.iattributesavetarget"); namespace search { -IAttributeSaveTarget::Config::~Config() { -} - IAttributeSaveTarget::~IAttributeSaveTarget() { } diff --git a/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.h b/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.h index 0d1c02905db..40d02a4b5c9 100644 --- a/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.h +++ b/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.h @@ -6,7 +6,7 @@ #include <vespa/vespalib/data/databuffer.h> #include <stdint.h> #include "iattributefilewriter.h" -#include <vespa/searchcommon/attribute/predicate_params.h> +#include "attribute_header.h" namespace search { @@ -15,137 +15,14 @@ namespace search { **/ class IAttributeSaveTarget { public: - /** - * Config class used by actual saveTarget implementations. - **/ - class Config { - private: - vespalib::string _fileName; - vespalib::string _basicType; - vespalib::string _collectionType; - vespalib::string _tensorType; - bool _hasMultiValue; - bool _hasWeightedSetType; - bool _enumerated; - attribute::PersistentPredicateParams _predicateParams; - uint32_t _numDocs; - uint32_t _fixedWidth; - uint64_t _uniqueValueCount; - uint64_t _totalValueCount; - uint64_t _createSerialNum; - uint32_t _version; - public: - Config() - : _fileName(""), - _basicType(""), - _collectionType(""), - _hasMultiValue(false), - _hasWeightedSetType(false), - _enumerated(false), - _predicateParams(), - _numDocs(0), - _fixedWidth(0), - _uniqueValueCount(0), - _totalValueCount(0), - _createSerialNum(0u), - _version(0) - { - } - - Config(const vespalib::string &fileName, - const vespalib::string &basicType, - const vespalib::string &collectionType, - const vespalib::string &tensorType, - bool multiValue, bool weightedSetType, - bool enumerated, - const attribute::PersistentPredicateParams &predicateParams, - uint32_t numDocs, - uint32_t fixedWidth, - uint64_t uniqueValueCount, - uint64_t totalValueCount, - uint64_t createSerialNum, - uint32_t version - ) - : _fileName(fileName), - _basicType(basicType), - _collectionType(collectionType), - _tensorType(tensorType), - _hasMultiValue(multiValue), - _hasWeightedSetType(weightedSetType), - _enumerated(enumerated), - _predicateParams(predicateParams), - _numDocs(numDocs), - _fixedWidth(fixedWidth), - _uniqueValueCount(uniqueValueCount), - _totalValueCount(totalValueCount), - _createSerialNum(createSerialNum), - _version(version) - { - } - ~Config(); - - const vespalib::string & getFileName() const { return _fileName; } - - const vespalib::string & - getBasicType() const - { - return _basicType; - } - - const vespalib::string & - getCollectionType() const - { - return _collectionType; - } - - const vespalib::string &getTensorType() const { - return _tensorType; - } - - bool hasMultiValue() const { return _hasMultiValue; } - bool hasWeightedSetType() const { return _hasWeightedSetType; } - uint32_t getNumDocs() const { return _numDocs; } - size_t getFixedWidth() const { return _fixedWidth; } - - uint64_t - getUniqueValueCount(void) const - { - return _uniqueValueCount; - } - - uint64_t - getTotalValueCount(void) const - { - return _totalValueCount; - } - - bool - getEnumerated(void) const - { - return _enumerated; - } - - uint64_t - getCreateSerialNum(void) const - { - return _createSerialNum; - } - - uint32_t getVersion() const { return _version; } - const attribute::PersistentPredicateParams &getPredicateParams() const { return _predicateParams; } - }; using Buffer = IAttributeFileWriter::Buffer; protected: - Config _cfg; + attribute::AttributeHeader _header; public: - IAttributeSaveTarget() : _cfg() {} - void setConfig(const Config & cfg) { _cfg = cfg; } + IAttributeSaveTarget() : _header() {} + void setHeader(const attribute::AttributeHeader & header) { _header = header; } - bool - getEnumerated(void) const - { - return _cfg.getEnumerated(); - } + bool getEnumerated(void) const { return _header.getEnumerated(); } /** * Setups this saveTarget before any data is written. Returns true diff --git a/searchlib/src/vespa/searchlib/attribute/multienumattribute.hpp b/searchlib/src/vespa/searchlib/attribute/multienumattribute.hpp index 712b51f5ea7..ddbca2f0fc8 100644 --- a/searchlib/src/vespa/searchlib/attribute/multienumattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/multienumattribute.hpp @@ -203,7 +203,7 @@ MultiValueEnumAttribute<B, M>::onInitSave() vespalib::GenerationHandler::Guard guard(this->getGenerationHandler(). takeGuard()); return std::make_unique<MultiValueEnumAttributeSaver<WeightedIndex>> - (std::move(guard), this->createSaveTargetConfig(), this->_mvMapping, + (std::move(guard), this->createAttributeHeader(), this->_mvMapping, this->_enumStore); } diff --git a/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp index 8b876e2833e..76917ee883f 100644 --- a/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp +++ b/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp @@ -73,10 +73,10 @@ public: template <typename MultiValueT> MultiValueEnumAttributeSaver<MultiValueT>:: MultiValueEnumAttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, const MultiValueMapping &mvMapping, const EnumStoreBase &enumStore) - : Parent(std::move(guard), cfg, mvMapping), + : Parent(std::move(guard), header, mvMapping), _mvMapping(mvMapping), _enumSaver(enumStore, true) { diff --git a/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h b/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h index fc8f3576165..eab8067b024 100644 --- a/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h +++ b/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h @@ -28,7 +28,7 @@ class MultiValueEnumAttributeSaver : public MultiValueAttributeSaver public: virtual bool onSave(IAttributeSaveTarget &saveTarget) override; MultiValueEnumAttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, const MultiValueMapping &mvMapping, const EnumStoreBase &enumStore); virtual ~MultiValueEnumAttributeSaver(); diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp b/searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp index 5cea78df5b9..d36ccaec995 100644 --- a/searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp @@ -189,7 +189,7 @@ MultiValueNumericAttribute<B, M>::onInitSave() vespalib::GenerationHandler::Guard guard(this->getGenerationHandler(). takeGuard()); return std::make_unique<MultiValueNumericAttributeSaver<MultiValueType>> - (std::move(guard), this->createSaveTargetConfig(), this->_mvMapping); + (std::move(guard), this->createAttributeHeader(), this->_mvMapping); } template <typename B, typename M> diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp index 147eb18bdef..d2ebd95d9f6 100644 --- a/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp +++ b/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp @@ -44,9 +44,9 @@ public: template <typename MultiValueT> MultiValueNumericAttributeSaver<MultiValueT>:: MultiValueNumericAttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, - const MultiValueMapping &mvMapping) - : Parent(std::move(guard), cfg, mvMapping), + const attribute::AttributeHeader &header, + const MultiValueMapping &mvMapping) + : Parent(std::move(guard), header, mvMapping), _mvMapping(mvMapping) { } diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h b/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h index 9b786ea5769..a2dd0225541 100644 --- a/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h +++ b/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h @@ -26,7 +26,7 @@ class MultiValueNumericAttributeSaver : public MultiValueAttributeSaver public: virtual bool onSave(IAttributeSaveTarget &saveTarget) override; MultiValueNumericAttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, const MultiValueMapping &mvMapping); virtual ~MultiValueNumericAttributeSaver(); diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.cpp index a7d8045443c..0d5a7b465c4 100644 --- a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.cpp +++ b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.cpp @@ -4,16 +4,15 @@ #include "multivalueattributesaver.h" using vespalib::GenerationHandler; -using search::IAttributeSaveTarget; namespace search { MultiValueAttributeSaver:: MultiValueAttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, const MvMappingBase &mvMapping) - : AttributeSaver(std::move(guard), cfg), - _frozenIndices(mvMapping.getRefCopy(cfg.getNumDocs())) + : AttributeSaver(std::move(guard), header), + _frozenIndices(mvMapping.getRefCopy(header.getNumDocs())) { } diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.h b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.h index e8b792cbb75..6bf755db143 100644 --- a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.h +++ b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.h @@ -3,7 +3,6 @@ #pragma once #include "attributesaver.h" -#include "iattributesavetarget.h" #include "multi_value_mapping.h" namespace search { @@ -21,7 +20,7 @@ protected: public: MultiValueAttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, const MvMappingBase &mvMapping); virtual ~MultiValueAttributeSaver(); diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.h b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.h index fe10abfd435..8024d287a0d 100644 --- a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.h +++ b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.h @@ -2,6 +2,8 @@ #pragma once +#include "iattributesavetarget.h" + namespace search { namespace multivalueattributesaver { diff --git a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp index 2342c374643..4ce7015fdba 100644 --- a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp @@ -5,6 +5,7 @@ #include <vespa/document/fieldvalue/predicatefieldvalue.h> #include <vespa/document/predicate/predicate.h> #include <vespa/vespalib/data/slime/slime.h> +#include "iattributesavetarget.h" #include <vespa/log/log.h> LOG_SETUP(".predicate_attribute"); diff --git a/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp index 629c7cf5b32..8909b854423 100644 --- a/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp @@ -127,7 +127,7 @@ ReferenceAttribute::onInitSave() takeGuard()); return std::make_unique<ReferenceAttributeSaver> (std::move(guard), - createSaveTargetConfig(), + createAttributeHeader(), getIndicesCopy(getCommittedDocIdLimit()), _store); } diff --git a/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.cpp b/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.cpp index fcc1fc11f22..7af9f607451 100644 --- a/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.cpp +++ b/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.cpp @@ -3,6 +3,7 @@ #include "reference_attribute_saver.h" #include <vespa/searchlib/util/bufferwriter.h> #include <vespa/vespalib/util/array.hpp> +#include "iattributesavetarget.h" using vespalib::GenerationHandler; @@ -14,10 +15,10 @@ namespace attribute { ReferenceAttributeSaver:: ReferenceAttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, IndicesCopyVector &&indices, const Store &store) - : AttributeSaver(std::move(guard), cfg), + : AttributeSaver(std::move(guard), header), _indices(std::move(indices)), _store(store), _saver(store.getSaver()) diff --git a/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.h b/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.h index 012356f24f9..b1d4dcf3a79 100644 --- a/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.h +++ b/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.h @@ -7,7 +7,6 @@ #include <vespa/searchlib/datastore/unique_store.h> #include <vespa/searchlib/datastore/unique_store_saver.h> #include <vespa/searchlib/common/rcuvector.h> -#include "iattributesavetarget.h" #include "reference_attribute.h" namespace search { @@ -41,7 +40,7 @@ private: virtual bool onSave(IAttributeSaveTarget &saveTarget) override; public: ReferenceAttributeSaver(vespalib::GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, IndicesCopyVector &&indices, const Store &store); diff --git a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp index 345c7227627..c798351211a 100644 --- a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp @@ -310,7 +310,7 @@ SingleValueEnumAttribute<B>::onInitSave() takeGuard()); return std::make_unique<SingleValueEnumAttributeSaver> (std::move(guard), - this->createSaveTargetConfig(), + this->createAttributeHeader(), getIndicesCopy(this->getCommittedDocIdLimit()), this->_enumStore); } diff --git a/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.cpp index 8cc351e0330..e11ee1dbb87 100644 --- a/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.cpp +++ b/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.cpp @@ -3,6 +3,7 @@ #include "singleenumattributesaver.h" #include <vespa/searchlib/util/bufferwriter.h> #include <vespa/vespalib/util/array.hpp> +#include "iattributesavetarget.h" using vespalib::GenerationHandler; @@ -11,10 +12,10 @@ namespace search { SingleValueEnumAttributeSaver:: SingleValueEnumAttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, EnumIndexCopyVector &&indices, const EnumStoreBase &enumStore) - : AttributeSaver(std::move(guard), cfg), + : AttributeSaver(std::move(guard), header), _indices(std::move(indices)), _enumSaver(enumStore, false) { diff --git a/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.h b/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.h index 7e7de3ef84e..b989194e1b0 100644 --- a/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.h +++ b/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.h @@ -3,7 +3,6 @@ #pragma once #include "attributesaver.h" -#include "iattributesavetarget.h" #include "singleenumattribute.h" #include "enumattributesaver.h" @@ -23,7 +22,7 @@ private: virtual bool onSave(IAttributeSaveTarget &saveTarget) override; public: SingleValueEnumAttributeSaver(vespalib::GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, EnumIndexCopyVector &&indices, const EnumStoreBase &enumStore); diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp index cbd4bfe383f..4285c868f24 100644 --- a/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp @@ -197,7 +197,7 @@ SingleValueNumericAttribute<B>::onInitSave() const uint32_t numDocs(this->getCommittedDocIdLimit()); assert(numDocs <= _data.size()); return std::make_unique<SingleValueNumericAttributeSaver> - (this->createSaveTargetConfig(), &_data[0], numDocs * sizeof(T)); + (this->createAttributeHeader(), &_data[0], numDocs * sizeof(T)); } template <typename B> diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.cpp index 3320dd977d2..fe8cdf1ca42 100644 --- a/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.cpp +++ b/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.cpp @@ -2,9 +2,9 @@ #include <vespa/fastos/fastos.h> #include "singlenumericattributesaver.h" +#include "iattributesavetarget.h" using vespalib::GenerationHandler; -using search::IAttributeSaveTarget; namespace search { @@ -17,9 +17,9 @@ const uint32_t MIN_ALIGNMENT = 4096; SingleValueNumericAttributeSaver:: -SingleValueNumericAttributeSaver(const IAttributeSaveTarget::Config &cfg, +SingleValueNumericAttributeSaver(const attribute::AttributeHeader &header, const void *data, size_t size) - : AttributeSaver(vespalib::GenerationHandler::Guard(), cfg), + : AttributeSaver(vespalib::GenerationHandler::Guard(), header), _buf() { _buf = std::make_unique<BufferBuf>(size, MIN_ALIGNMENT); diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.h b/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.h index 585e5c49dab..8d8248ae74f 100644 --- a/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.h +++ b/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.h @@ -22,7 +22,7 @@ private: virtual bool onSave(IAttributeSaveTarget &saveTarget) override; public: - SingleValueNumericAttributeSaver(const IAttributeSaveTarget::Config &cfg, + SingleValueNumericAttributeSaver(const attribute::AttributeHeader &header, const void *data, size_t size); virtual ~SingleValueNumericAttributeSaver(); diff --git a/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp index 8d75f00c901..83e9d6fdc92 100644 --- a/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp @@ -5,6 +5,7 @@ #include "primitivereader.h" #include "attributeiterators.hpp" #include <vespa/searchlib/queryeval/emptysearch.h> +#include "iattributesavetarget.h" namespace search { diff --git a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.cpp b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.cpp index 7a395e04c09..731e51abbca 100644 --- a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.cpp +++ b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.cpp @@ -169,7 +169,7 @@ DenseTensorAttribute::onInitSave() takeGuard()); return std::make_unique<DenseTensorAttributeSaver> (std::move(guard), - this->createSaveTargetConfig(), + this->createAttributeHeader(), getRefCopy(), _denseTensorStore); } diff --git a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.cpp b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.cpp index d57d614c82c..7daec1159ca 100644 --- a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.cpp +++ b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.cpp @@ -4,9 +4,9 @@ #include "dense_tensor_attribute_saver.h" #include <vespa/searchlib/util/bufferwriter.h> #include "dense_tensor_store.h" +#include <vespa/searchlib/attribute/iattributesavetarget.h> using vespalib::GenerationHandler; -using search::IAttributeSaveTarget; namespace search { @@ -21,10 +21,10 @@ static const uint8_t tensorIsPresent = 1; DenseTensorAttributeSaver:: DenseTensorAttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, - RefCopyVector &&refs, - const DenseTensorStore &tensorStore) - : AttributeSaver(std::move(guard), cfg), + const attribute::AttributeHeader &header, + RefCopyVector &&refs, + const DenseTensorStore &tensorStore) + : AttributeSaver(std::move(guard), header), _refs(std::move(refs)), _tensorStore(tensorStore) { diff --git a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.h b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.h index 0b76cc9cfad..e297ef8edc6 100644 --- a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.h +++ b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.h @@ -3,7 +3,6 @@ #pragma once #include <vespa/searchlib/attribute/attributesaver.h> -#include <vespa/searchlib/attribute/iattributesavetarget.h> #include "tensor_attribute.h" namespace search { @@ -27,7 +26,7 @@ private: virtual bool onSave(IAttributeSaveTarget &saveTarget) override; public: DenseTensorAttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, RefCopyVector &&refs, const DenseTensorStore &tensorStore); diff --git a/searchlib/src/vespa/searchlib/tensor/generic_tensor_attribute.cpp b/searchlib/src/vespa/searchlib/tensor/generic_tensor_attribute.cpp index 4fe24608b1e..627f2428e5f 100644 --- a/searchlib/src/vespa/searchlib/tensor/generic_tensor_attribute.cpp +++ b/searchlib/src/vespa/searchlib/tensor/generic_tensor_attribute.cpp @@ -103,7 +103,7 @@ GenericTensorAttribute::onInitSave() takeGuard()); return std::make_unique<GenericTensorAttributeSaver> (std::move(guard), - this->createSaveTargetConfig(), + this->createAttributeHeader(), getRefCopy(), _genericTensorStore); } diff --git a/searchlib/src/vespa/searchlib/tensor/generic_tensor_attribute_saver.cpp b/searchlib/src/vespa/searchlib/tensor/generic_tensor_attribute_saver.cpp index ebcec991c73..6c22434afe9 100644 --- a/searchlib/src/vespa/searchlib/tensor/generic_tensor_attribute_saver.cpp +++ b/searchlib/src/vespa/searchlib/tensor/generic_tensor_attribute_saver.cpp @@ -4,9 +4,9 @@ #include "generic_tensor_attribute_saver.h" #include <vespa/searchlib/util/bufferwriter.h> #include "generic_tensor_store.h" +#include <vespa/searchlib/attribute/iattributesavetarget.h> using vespalib::GenerationHandler; -using search::IAttributeSaveTarget; namespace search { @@ -14,10 +14,10 @@ namespace tensor { GenericTensorAttributeSaver:: GenericTensorAttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, + const attribute::AttributeHeader &header, RefCopyVector &&refs, const GenericTensorStore &tensorStore) - : AttributeSaver(std::move(guard), cfg), + : AttributeSaver(std::move(guard), header), _refs(std::move(refs)), _tensorStore(tensorStore) { diff --git a/searchlib/src/vespa/searchlib/tensor/generic_tensor_attribute_saver.h b/searchlib/src/vespa/searchlib/tensor/generic_tensor_attribute_saver.h index ad9d5550d3a..c351ae573b1 100644 --- a/searchlib/src/vespa/searchlib/tensor/generic_tensor_attribute_saver.h +++ b/searchlib/src/vespa/searchlib/tensor/generic_tensor_attribute_saver.h @@ -3,7 +3,6 @@ #pragma once #include <vespa/searchlib/attribute/attributesaver.h> -#include <vespa/searchlib/attribute/iattributesavetarget.h> #include "tensor_attribute.h" namespace search { @@ -27,9 +26,9 @@ private: virtual bool onSave(IAttributeSaveTarget &saveTarget) override; public: GenericTensorAttributeSaver(GenerationHandler::Guard &&guard, - const IAttributeSaveTarget::Config &cfg, - RefCopyVector &&refs, - const GenericTensorStore &tensorStore); + const attribute::AttributeHeader &header, + RefCopyVector &&refs, + const GenericTensorStore &tensorStore); virtual ~GenericTensorAttributeSaver(); }; |