diff options
author | vng <viktor.govako@gmail.com> | 2010-12-19 23:40:52 +0300 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:08:42 +0300 |
commit | 327aa0e7cb1d20ee8bfd333899a8ec7b8cea9c41 (patch) | |
tree | 610e24a6ae45f456675550db56ffdf497bd2c88e /indexer/features_vector.hpp | |
parent | c65e815b69d1eb1ac86636e70d8b66ebcf40052e (diff) |
[Refactoring]
Divide FeatureBuilder in:
- FeatureBuilderGeom (store geometry as-as)
- FeatureBuilderGeomRef (store geometry separately)
Add FeatureGeomRef as feature with separate geometry.
Diffstat (limited to 'indexer/features_vector.hpp')
-rw-r--r-- | indexer/features_vector.hpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/indexer/features_vector.hpp b/indexer/features_vector.hpp index 81d62abdc8..0721366a03 100644 --- a/indexer/features_vector.hpp +++ b/indexer/features_vector.hpp @@ -14,16 +14,15 @@ class FeaturesVector public: typedef ReaderT ReaderType; - explicit FeaturesVector(ReaderT const & reader) : m_RecordReader(reader, 256) + explicit FeaturesVector(ReaderT const & reader) + : m_RecordReader(reader, 256), m_source(reader.GetName()) { } void Get(uint64_t pos, FeatureType & feature) const { - vector<char> record; - uint32_t offset; - m_RecordReader.ReadRecord(pos, record, offset); - feature.Deserialize(record, offset); + m_RecordReader.ReadRecord(pos, m_source.m_data, m_source.m_offset); + feature.Deserialize(m_source); } template <class TDo> void ForEachOffset(TDo const & toDo) const @@ -48,10 +47,11 @@ public: private: FeatureType const & DeserializeFeature(char const * data, uint32_t size, FeatureType * pFeature) const { - vector<char> data1(data, data + size); - pFeature->Deserialize(data1); + m_source.assign(data, size); + pFeature->Deserialize(m_source); return *pFeature; } VarRecordReader<ReaderT, &VarRecordSizeReaderVarint> m_RecordReader; + mutable FeatureType::read_source_t m_source; }; |