diff options
author | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-19 14:49:38 +0300 |
---|---|---|
committer | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-23 10:25:11 +0300 |
commit | 3fa7071a1b57145da7559144f2316ad3be555d39 (patch) | |
tree | e82db81c207ae5b5bfc93037d735279a301ca5b3 /indexer/altitude_loader.hpp | |
parent | ec73bce900be6b5379b49200781d2b1f7c4e4411 (diff) |
Implementation index for altitude data with the help of succinct strutures.
Diffstat (limited to 'indexer/altitude_loader.hpp')
-rw-r--r-- | indexer/altitude_loader.hpp | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/indexer/altitude_loader.hpp b/indexer/altitude_loader.hpp index d792b28467..d7a27785de 100644 --- a/indexer/altitude_loader.hpp +++ b/indexer/altitude_loader.hpp @@ -2,24 +2,32 @@ #include "indexer/feature_altitude.hpp" #include "indexer/index.hpp" -#include "coding/dd_vector.hpp" +#include "3party/succinct/rs_bit_vector.hpp" + +#include "std/unique_ptr.hpp" +#include "std/vector.hpp" namespace feature { +using TAltitudeSectionVersion = uint16_t; +using TAltitudeSectionOffset = uint32_t; + class AltitudeLoader { public: AltitudeLoader(MwmValue const * mwmValue); - Altitudes GetAltitudes(uint32_t featureId) const; + + TAltitudes GetAltitude(uint32_t featureId, size_t pointCount) const; private: - struct TAltitudeIndexEntry - { - uint32_t featureId; - feature::TAltitude beginAlt; - feature::TAltitude endAlt; - }; + void DeserializeHeader(ReaderSource<FilesContainerR::TReader> & rs); - unique_ptr<DDVector<TAltitudeIndexEntry, FilesContainerR::TReader>> m_idx; + vector<char> m_altitudeAvailabilitBuf; + vector<char> m_featureTableBuf; + unique_ptr<succinct::rs_bit_vector> m_altitudeAvailability; + unique_ptr<succinct::elias_fano> m_featureTable; + FilesContainerR::TReader reader; + TAltitudeSectionOffset m_altitudeInfoOffset; + TAltitude m_minAltitude; }; } // namespace feature |