mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-23 22:53:43 +00:00
[feature] Put m_metaDeserializer into SharedLoadInfo.
Signed-off-by: Viktor Govako <viktor.govako@gmail.com>
This commit is contained in:
committed by
Konstantin Pastbin
parent
6beabb2fe1
commit
588028c9eb
@@ -7,9 +7,8 @@
|
||||
FeaturesVector::FeaturesVector(FilesContainerR const & cont, feature::DataHeader const & header,
|
||||
feature::FeaturesOffsetsTable const * table,
|
||||
indexer::MetadataDeserializer * metaDeserializer)
|
||||
: m_loadInfo(cont, header)
|
||||
: m_loadInfo(cont, header, metaDeserializer)
|
||||
, m_table(table)
|
||||
, m_metaDeserializer(metaDeserializer)
|
||||
{
|
||||
InitRecordsReader();
|
||||
}
|
||||
@@ -17,17 +16,19 @@ FeaturesVector::FeaturesVector(FilesContainerR const & cont, feature::DataHeader
|
||||
void FeaturesVector::InitRecordsReader()
|
||||
{
|
||||
FilesContainerR::TReader reader = m_loadInfo.GetDataReader();
|
||||
ReaderSource src(reader);
|
||||
|
||||
feature::DatSectionHeader header;
|
||||
header.Read(*reader.GetPtr());
|
||||
CHECK(header.m_version == feature::DatSectionHeader::Version::V0, (base::Underlying(header.m_version)));
|
||||
header.Read(src);
|
||||
|
||||
CHECK_EQUAL(header.m_version, feature::DatSectionHeader::Version::V0, ());
|
||||
m_recordReader = std::make_unique<RecordReader>(reader.SubReader(header.m_featuresOffset, header.m_featuresSize));
|
||||
}
|
||||
|
||||
std::unique_ptr<FeatureType> FeaturesVector::GetByIndex(uint32_t index) const
|
||||
{
|
||||
auto const ftOffset = m_table ? m_table->GetFeatureOffset(index) : index;
|
||||
return std::make_unique<FeatureType>(&m_loadInfo, m_recordReader->ReadRecord(ftOffset), m_metaDeserializer);
|
||||
return std::make_unique<FeatureType>(&m_loadInfo, m_recordReader->ReadRecord(ftOffset));
|
||||
}
|
||||
|
||||
size_t FeaturesVector::GetNumFeatures() const
|
||||
@@ -47,11 +48,11 @@ FeaturesVectorTest::FeaturesVectorTest(FilesContainerR const & cont)
|
||||
m_vector.m_table = feature::FeaturesOffsetsTable::Load(m_cont).release();
|
||||
|
||||
if (m_cont.IsExist(METADATA_FILE_TAG))
|
||||
m_vector.m_metaDeserializer = indexer::MetadataDeserializer::Load(m_cont).release();
|
||||
m_vector.m_loadInfo.m_metaDeserializer = indexer::MetadataDeserializer::Load(m_cont).release();
|
||||
}
|
||||
|
||||
FeaturesVectorTest::~FeaturesVectorTest()
|
||||
{
|
||||
delete m_vector.m_table;
|
||||
delete m_vector.m_metaDeserializer;
|
||||
delete m_vector.m_loadInfo.m_metaDeserializer;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user