mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-20 21:33:59 +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
@@ -15,7 +15,7 @@
|
|||||||
#include "geometry/rect2d.hpp"
|
#include "geometry/rect2d.hpp"
|
||||||
#include "geometry/screenbase.hpp"
|
#include "geometry/screenbase.hpp"
|
||||||
|
|
||||||
#include "base/buffer_vector.hpp"
|
#include "base/string_utils.hpp"
|
||||||
|
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
#include "geometry/mercator.hpp"
|
#include "geometry/mercator.hpp"
|
||||||
|
|
||||||
|
#include "base/string_utils.hpp"
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
namespace df
|
namespace df
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ public:
|
|||||||
WriteToSink(sink, m_featuresSize);
|
WriteToSink(sink, m_featuresSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Read(Reader & reader)
|
template <typename Source>
|
||||||
|
void Read(Source & source)
|
||||||
{
|
{
|
||||||
NonOwningReaderSource source(reader);
|
|
||||||
m_version = static_cast<Version>(ReadPrimitiveFromSource<uint8_t>(source));
|
m_version = static_cast<Version>(ReadPrimitiveFromSource<uint8_t>(source));
|
||||||
CHECK_EQUAL(static_cast<uint8_t>(m_version), static_cast<uint8_t>(Version::V0), ());
|
CHECK_EQUAL(static_cast<uint8_t>(m_version), static_cast<uint8_t>(Version::V0), ());
|
||||||
m_featuresOffset = ReadPrimitiveFromSource<uint32_t>(source);
|
m_featuresOffset = ReadPrimitiveFromSource<uint32_t>(source);
|
||||||
|
|||||||
@@ -184,11 +184,9 @@ uint8_t ReadByte(TSource & src)
|
|||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
FeatureType::FeatureType(SharedLoadInfo const * loadInfo, vector<uint8_t> && buffer,
|
FeatureType::FeatureType(SharedLoadInfo const * loadInfo, vector<uint8_t> && buffer)
|
||||||
indexer::MetadataDeserializer * metadataDeserializer)
|
|
||||||
: m_loadInfo(loadInfo)
|
: m_loadInfo(loadInfo)
|
||||||
, m_data(std::move(buffer))
|
, m_data(std::move(buffer))
|
||||||
, m_metadataDeserializer(metadataDeserializer)
|
|
||||||
{
|
{
|
||||||
CHECK(m_loadInfo, ());
|
CHECK(m_loadInfo, ());
|
||||||
|
|
||||||
@@ -608,10 +606,10 @@ void FeatureType::ParseMetadata()
|
|||||||
if (m_parsed.m_metadata)
|
if (m_parsed.m_metadata)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CHECK(m_metadataDeserializer, ());
|
CHECK(m_loadInfo->m_metaDeserializer, ());
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
UNUSED_VALUE(m_metadataDeserializer->Get(m_id.m_index, m_metadata));
|
UNUSED_VALUE(m_loadInfo->m_metaDeserializer->Get(m_id.m_index, m_metadata));
|
||||||
}
|
}
|
||||||
catch (Reader::OpenException const &)
|
catch (Reader::OpenException const &)
|
||||||
{
|
{
|
||||||
@@ -626,10 +624,10 @@ void FeatureType::ParseMetaIds()
|
|||||||
if (m_parsed.m_metaIds)
|
if (m_parsed.m_metaIds)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CHECK(m_metadataDeserializer, ());
|
CHECK(m_loadInfo->m_metaDeserializer, ());
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
UNUSED_VALUE(m_metadataDeserializer->GetIds(m_id.m_index, m_metaIds));
|
UNUSED_VALUE(m_loadInfo->m_metaDeserializer->GetIds(m_id.m_index, m_metaIds));
|
||||||
}
|
}
|
||||||
catch (Reader::OpenException const &)
|
catch (Reader::OpenException const &)
|
||||||
{
|
{
|
||||||
@@ -845,7 +843,7 @@ std::string_view FeatureType::GetMetadata(feature::Metadata::EType type)
|
|||||||
{
|
{
|
||||||
auto const it = base::FindIf(m_metaIds, [&type](auto const & v) { return v.first == type; });
|
auto const it = base::FindIf(m_metaIds, [&type](auto const & v) { return v.first == type; });
|
||||||
if (it != m_metaIds.end())
|
if (it != m_metaIds.end())
|
||||||
meta = m_metadata.Set(type, m_metadataDeserializer->GetMetaById(it->second));
|
meta = m_metadata.Set(type, m_loadInfo->m_metaDeserializer->GetMetaById(it->second));
|
||||||
}
|
}
|
||||||
return meta;
|
return meta;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "indexer/feature_data.hpp"
|
#include "indexer/feature_data.hpp"
|
||||||
|
#include "indexer/metadata_serdes.hpp"
|
||||||
|
|
||||||
#include "geometry/point2d.hpp"
|
#include "geometry/point2d.hpp"
|
||||||
#include "geometry/rect2d.hpp"
|
#include "geometry/rect2d.hpp"
|
||||||
@@ -34,8 +35,7 @@ class FeatureType
|
|||||||
public:
|
public:
|
||||||
using GeometryOffsets = buffer_vector<uint32_t, feature::DataHeader::kMaxScalesCount>;
|
using GeometryOffsets = buffer_vector<uint32_t, feature::DataHeader::kMaxScalesCount>;
|
||||||
|
|
||||||
FeatureType(feature::SharedLoadInfo const * loadInfo, std::vector<uint8_t> && buffer,
|
FeatureType(feature::SharedLoadInfo const * loadInfo, std::vector<uint8_t> && buffer);
|
||||||
indexer::MetadataDeserializer * metadataDeserializer);
|
|
||||||
|
|
||||||
static std::unique_ptr<FeatureType> CreateFromMapObject(osm::MapObject const & emo);
|
static std::unique_ptr<FeatureType> CreateFromMapObject(osm::MapObject const & emo);
|
||||||
|
|
||||||
@@ -248,9 +248,6 @@ private:
|
|||||||
feature::SharedLoadInfo const * m_loadInfo = nullptr;
|
feature::SharedLoadInfo const * m_loadInfo = nullptr;
|
||||||
std::vector<uint8_t> m_data;
|
std::vector<uint8_t> m_data;
|
||||||
|
|
||||||
// Pointer to shared metedata deserializer. Must be set for mwm format >= Format::v11
|
|
||||||
indexer::MetadataDeserializer * m_metadataDeserializer = nullptr;
|
|
||||||
|
|
||||||
ParsedFlags m_parsed;
|
ParsedFlags m_parsed;
|
||||||
Offsets m_offsets;
|
Offsets m_offsets;
|
||||||
uint32_t m_ptsSimpMask = 0;
|
uint32_t m_ptsSimpMask = 0;
|
||||||
|
|||||||
@@ -24,6 +24,34 @@ char constexpr const * kBaseCommonsUrl =
|
|||||||
#endif
|
#endif
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
std::string_view MetadataBase::Get(uint8_t type) const
|
||||||
|
{
|
||||||
|
std::string_view sv;
|
||||||
|
auto const it = m_metadata.find(type);
|
||||||
|
if (it != m_metadata.end())
|
||||||
|
{
|
||||||
|
sv = it->second;
|
||||||
|
ASSERT(!sv.empty(), ());
|
||||||
|
}
|
||||||
|
return sv;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string_view MetadataBase::Set(uint8_t type, std::string value)
|
||||||
|
{
|
||||||
|
std::string_view sv;
|
||||||
|
|
||||||
|
if (value.empty())
|
||||||
|
m_metadata.erase(type);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auto & res = m_metadata[type];
|
||||||
|
res = std::move(value);
|
||||||
|
sv = res;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sv;
|
||||||
|
}
|
||||||
|
|
||||||
string Metadata::ToWikiURL(std::string v)
|
string Metadata::ToWikiURL(std::string v)
|
||||||
{
|
{
|
||||||
auto const colon = v.find(':');
|
auto const colon = v.find(':');
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "indexer/metadata_serdes.hpp"
|
|
||||||
|
|
||||||
#include "coding/reader.hpp"
|
|
||||||
#include "coding/string_utf8_multilang.hpp"
|
#include "coding/string_utf8_multilang.hpp"
|
||||||
|
|
||||||
#include "base/stl_helpers.hpp"
|
#include "base/stl_helpers.hpp"
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@@ -17,23 +13,10 @@ namespace feature
|
|||||||
class MetadataBase
|
class MetadataBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool Has(uint8_t type) const
|
bool Has(uint8_t type) const { return m_metadata.find(type) != m_metadata.end(); }
|
||||||
{
|
|
||||||
auto const it = m_metadata.find(type);
|
|
||||||
return it != m_metadata.end();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string_view Get(uint8_t type) const
|
std::string_view Get(uint8_t type) const;
|
||||||
{
|
std::string_view Set(uint8_t type, std::string value);
|
||||||
std::string_view sv;
|
|
||||||
auto const it = m_metadata.find(type);
|
|
||||||
if (it != m_metadata.end())
|
|
||||||
{
|
|
||||||
sv = it->second;
|
|
||||||
ASSERT(!sv.empty(), ());
|
|
||||||
}
|
|
||||||
return sv;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool Empty() const { return m_metadata.empty(); }
|
inline bool Empty() const { return m_metadata.empty(); }
|
||||||
inline size_t Size() const { return m_metadata.size(); }
|
inline size_t Size() const { return m_metadata.size(); }
|
||||||
@@ -66,24 +49,6 @@ public:
|
|||||||
void Clear() { m_metadata.clear(); }
|
void Clear() { m_metadata.clear(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend bool indexer::MetadataDeserializer::Get(uint32_t id, MetadataBase & meta);
|
|
||||||
|
|
||||||
std::string_view Set(uint8_t type, std::string value)
|
|
||||||
{
|
|
||||||
std::string_view sv;
|
|
||||||
|
|
||||||
if (value.empty())
|
|
||||||
m_metadata.erase(type);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
auto & res = m_metadata[type];
|
|
||||||
res = std::move(value);
|
|
||||||
sv = res;
|
|
||||||
}
|
|
||||||
|
|
||||||
return sv;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @todo Change uint8_t to appropriate type when FMD_COUNT reaches 256.
|
/// @todo Change uint8_t to appropriate type when FMD_COUNT reaches 256.
|
||||||
std::map<uint8_t, std::string> m_metadata;
|
std::map<uint8_t, std::string> m_metadata;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7,9 +7,8 @@
|
|||||||
FeaturesVector::FeaturesVector(FilesContainerR const & cont, feature::DataHeader const & header,
|
FeaturesVector::FeaturesVector(FilesContainerR const & cont, feature::DataHeader const & header,
|
||||||
feature::FeaturesOffsetsTable const * table,
|
feature::FeaturesOffsetsTable const * table,
|
||||||
indexer::MetadataDeserializer * metaDeserializer)
|
indexer::MetadataDeserializer * metaDeserializer)
|
||||||
: m_loadInfo(cont, header)
|
: m_loadInfo(cont, header, metaDeserializer)
|
||||||
, m_table(table)
|
, m_table(table)
|
||||||
, m_metaDeserializer(metaDeserializer)
|
|
||||||
{
|
{
|
||||||
InitRecordsReader();
|
InitRecordsReader();
|
||||||
}
|
}
|
||||||
@@ -17,17 +16,19 @@ FeaturesVector::FeaturesVector(FilesContainerR const & cont, feature::DataHeader
|
|||||||
void FeaturesVector::InitRecordsReader()
|
void FeaturesVector::InitRecordsReader()
|
||||||
{
|
{
|
||||||
FilesContainerR::TReader reader = m_loadInfo.GetDataReader();
|
FilesContainerR::TReader reader = m_loadInfo.GetDataReader();
|
||||||
|
ReaderSource src(reader);
|
||||||
|
|
||||||
feature::DatSectionHeader header;
|
feature::DatSectionHeader header;
|
||||||
header.Read(*reader.GetPtr());
|
header.Read(src);
|
||||||
CHECK(header.m_version == feature::DatSectionHeader::Version::V0, (base::Underlying(header.m_version)));
|
|
||||||
|
CHECK_EQUAL(header.m_version, feature::DatSectionHeader::Version::V0, ());
|
||||||
m_recordReader = std::make_unique<RecordReader>(reader.SubReader(header.m_featuresOffset, header.m_featuresSize));
|
m_recordReader = std::make_unique<RecordReader>(reader.SubReader(header.m_featuresOffset, header.m_featuresSize));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<FeatureType> FeaturesVector::GetByIndex(uint32_t index) const
|
std::unique_ptr<FeatureType> FeaturesVector::GetByIndex(uint32_t index) const
|
||||||
{
|
{
|
||||||
auto const ftOffset = m_table ? m_table->GetFeatureOffset(index) : index;
|
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
|
size_t FeaturesVector::GetNumFeatures() const
|
||||||
@@ -47,11 +48,11 @@ FeaturesVectorTest::FeaturesVectorTest(FilesContainerR const & cont)
|
|||||||
m_vector.m_table = feature::FeaturesOffsetsTable::Load(m_cont).release();
|
m_vector.m_table = feature::FeaturesOffsetsTable::Load(m_cont).release();
|
||||||
|
|
||||||
if (m_cont.IsExist(METADATA_FILE_TAG))
|
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()
|
FeaturesVectorTest::~FeaturesVectorTest()
|
||||||
{
|
{
|
||||||
delete m_vector.m_table;
|
delete m_vector.m_table;
|
||||||
delete m_vector.m_metaDeserializer;
|
delete m_vector.m_loadInfo.m_metaDeserializer;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "indexer/feature.hpp"
|
#include "indexer/feature.hpp"
|
||||||
#include "indexer/metadata_serdes.hpp"
|
|
||||||
#include "indexer/shared_load_info.hpp"
|
#include "indexer/shared_load_info.hpp"
|
||||||
|
|
||||||
#include "coding/var_record_reader.hpp"
|
#include "coding/var_record_reader.hpp"
|
||||||
|
|
||||||
#include <cstdint>
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -35,7 +33,7 @@ public:
|
|||||||
uint32_t index = 0;
|
uint32_t index = 0;
|
||||||
m_recordReader->ForEachRecord([&](uint32_t pos, std::vector<uint8_t> && data)
|
m_recordReader->ForEachRecord([&](uint32_t pos, std::vector<uint8_t> && data)
|
||||||
{
|
{
|
||||||
FeatureType ft(&m_loadInfo, std::move(data), m_metaDeserializer);
|
FeatureType ft(&m_loadInfo, std::move(data));
|
||||||
|
|
||||||
// We can't properly set MwmId here, because FeaturesVector
|
// We can't properly set MwmId here, because FeaturesVector
|
||||||
// works with FileContainerR, not with MwmId/MwmHandle/MwmValue.
|
// works with FileContainerR, not with MwmId/MwmHandle/MwmValue.
|
||||||
@@ -57,7 +55,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
/// Actually, this ctor is needed only for ForEachOffset call.
|
/// Actually, this ctor is needed only for ForEachOffset call.
|
||||||
/// Didn't find a better solution without big refactoring.
|
/// Didn't find a better solution without big refactoring.
|
||||||
FeaturesVector(FilesContainerR const & cont, feature::DataHeader const & header) : m_loadInfo(cont, header)
|
FeaturesVector(FilesContainerR const & cont, feature::DataHeader const & header) : m_loadInfo(cont, header, nullptr)
|
||||||
{
|
{
|
||||||
InitRecordsReader();
|
InitRecordsReader();
|
||||||
}
|
}
|
||||||
@@ -70,7 +68,6 @@ private:
|
|||||||
feature::SharedLoadInfo m_loadInfo;
|
feature::SharedLoadInfo m_loadInfo;
|
||||||
std::unique_ptr<RecordReader> m_recordReader;
|
std::unique_ptr<RecordReader> m_recordReader;
|
||||||
feature::FeaturesOffsetsTable const * m_table;
|
feature::FeaturesOffsetsTable const * m_table;
|
||||||
indexer::MetadataDeserializer * m_metaDeserializer;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Test features vector (reader) that combines all the needed data for stand-alone work.
|
/// Test features vector (reader) that combines all the needed data for stand-alone work.
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
#include "indexer/mwm_set.hpp"
|
#include "indexer/mwm_set.hpp"
|
||||||
|
|
||||||
#include "indexer/features_offsets_table.hpp"
|
#include "indexer/features_offsets_table.hpp"
|
||||||
|
#include "indexer/metadata_serdes.hpp" // needed for MwmValue dtor
|
||||||
#include "indexer/scales.hpp"
|
#include "indexer/scales.hpp"
|
||||||
|
|
||||||
#include "coding/reader.hpp"
|
|
||||||
|
|
||||||
#include "platform/local_country_file_utils.hpp"
|
#include "platform/local_country_file_utils.hpp"
|
||||||
|
|
||||||
#include "base/assert.hpp"
|
#include "base/assert.hpp"
|
||||||
@@ -391,6 +390,8 @@ MwmValue::MwmValue(LocalCountryFile const & localFile)
|
|||||||
m_header.Load(m_cont);
|
m_header.Load(m_cont);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MwmValue::~MwmValue() {}
|
||||||
|
|
||||||
void MwmValue::SetTable(MwmInfoEx & info)
|
void MwmValue::SetTable(MwmInfoEx & info)
|
||||||
{
|
{
|
||||||
m_table = info.m_table.lock();
|
m_table = info.m_table.lock();
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
#include "platform/local_country_file.hpp"
|
#include "platform/local_country_file.hpp"
|
||||||
#include "platform/mwm_version.hpp"
|
#include "platform/mwm_version.hpp"
|
||||||
|
|
||||||
|
#include "coding/files_container.hpp"
|
||||||
|
|
||||||
#include "geometry/rect2d.hpp"
|
#include "geometry/rect2d.hpp"
|
||||||
|
|
||||||
#include "base/macros.hpp"
|
#include "base/macros.hpp"
|
||||||
@@ -26,6 +28,10 @@ namespace feature
|
|||||||
{
|
{
|
||||||
class FeaturesOffsetsTable;
|
class FeaturesOffsetsTable;
|
||||||
}
|
}
|
||||||
|
namespace indexer
|
||||||
|
{
|
||||||
|
class MetadataDeserializer;
|
||||||
|
}
|
||||||
|
|
||||||
/// Information about stored mwm.
|
/// Information about stored mwm.
|
||||||
class MwmInfo
|
class MwmInfo
|
||||||
@@ -387,6 +393,8 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit MwmValue(platform::LocalCountryFile const & localFile);
|
explicit MwmValue(platform::LocalCountryFile const & localFile);
|
||||||
|
~MwmValue();
|
||||||
|
|
||||||
void SetTable(MwmInfoEx & info);
|
void SetTable(MwmInfoEx & info);
|
||||||
|
|
||||||
feature::DataHeader const & GetHeader() const { return m_header; }
|
feature::DataHeader const & GetHeader() const { return m_header; }
|
||||||
|
|||||||
@@ -6,7 +6,11 @@
|
|||||||
|
|
||||||
namespace feature
|
namespace feature
|
||||||
{
|
{
|
||||||
SharedLoadInfo::SharedLoadInfo(FilesContainerR const & cont, DataHeader const & header) : m_cont(cont), m_header(header)
|
SharedLoadInfo::SharedLoadInfo(FilesContainerR const & cont, DataHeader const & header,
|
||||||
|
indexer::MetadataDeserializer * metaDeserializer)
|
||||||
|
: m_cont(cont)
|
||||||
|
, m_header(header)
|
||||||
|
, m_metaDeserializer(metaDeserializer)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
SharedLoadInfo::Reader SharedLoadInfo::GetDataReader() const
|
SharedLoadInfo::Reader SharedLoadInfo::GetDataReader() const
|
||||||
|
|||||||
@@ -7,6 +7,11 @@
|
|||||||
|
|
||||||
#include "base/macros.hpp"
|
#include "base/macros.hpp"
|
||||||
|
|
||||||
|
namespace indexer
|
||||||
|
{
|
||||||
|
class MetadataDeserializer;
|
||||||
|
}
|
||||||
|
|
||||||
namespace feature
|
namespace feature
|
||||||
{
|
{
|
||||||
// This info is created once per FeaturesVector.
|
// This info is created once per FeaturesVector.
|
||||||
@@ -15,7 +20,8 @@ class SharedLoadInfo
|
|||||||
public:
|
public:
|
||||||
using Reader = FilesContainerR::TReader;
|
using Reader = FilesContainerR::TReader;
|
||||||
|
|
||||||
SharedLoadInfo(FilesContainerR const & cont, DataHeader const & header);
|
SharedLoadInfo(FilesContainerR const & cont, DataHeader const & header,
|
||||||
|
indexer::MetadataDeserializer * metaDeserializer);
|
||||||
|
|
||||||
Reader GetDataReader() const;
|
Reader GetDataReader() const;
|
||||||
Reader GetGeometryReader(size_t ind) const;
|
Reader GetGeometryReader(size_t ind) const;
|
||||||
@@ -39,6 +45,9 @@ private:
|
|||||||
FilesContainerR const & m_cont;
|
FilesContainerR const & m_cont;
|
||||||
DataHeader const & m_header;
|
DataHeader const & m_header;
|
||||||
|
|
||||||
|
public:
|
||||||
|
indexer::MetadataDeserializer * m_metaDeserializer;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_MOVE(SharedLoadInfo);
|
DISALLOW_COPY_AND_MOVE(SharedLoadInfo);
|
||||||
};
|
};
|
||||||
} // namespace feature
|
} // namespace feature
|
||||||
|
|||||||
Reference in New Issue
Block a user