diff options
author | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-23 21:38:16 +0300 |
---|---|---|
committer | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-23 21:40:50 +0300 |
commit | 979f48bfaf7322320801db215b1d0e3d231f8699 (patch) | |
tree | 7109319338f48996f9f98ff361599a1687194225 /indexer/feature_altitude.hpp | |
parent | 9879d1808a7da38006d9067089215dec75d7aa6c (diff) |
Writing altitude section without intermediate files and using MemoryRegion for reading it.
Diffstat (limited to 'indexer/feature_altitude.hpp')
-rw-r--r-- | indexer/feature_altitude.hpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/indexer/feature_altitude.hpp b/indexer/feature_altitude.hpp index 8cb8502501..3b225d04ee 100644 --- a/indexer/feature_altitude.hpp +++ b/indexer/feature_altitude.hpp @@ -1,7 +1,7 @@ #pragma once #include "coding/varint.hpp" -#include "base/logging.hpp" +#include "base/assert.hpp" #include "std/cstdint.hpp" #include "std/limits.hpp" @@ -24,17 +24,14 @@ struct AltitudeHeader Reset(); } - AltitudeHeader(TAltitudeSectionVersion v, TAltitude min, TAltitudeSectionOffset offset) - : version(v), minAltitude(min), altitudeInfoOffset(offset) - { - } - template <class TSink> void Serialize(TSink & sink) const { sink.Write(&version, sizeof(version)); sink.Write(&minAltitude, sizeof(minAltitude)); + sink.Write(&featureTableOffset, sizeof(featureTableOffset)); sink.Write(&altitudeInfoOffset, sizeof(altitudeInfoOffset)); + sink.Write(&endOffset, sizeof(endOffset)); } template <class TSource> @@ -42,24 +39,32 @@ struct AltitudeHeader { src.Read(&version, sizeof(version)); src.Read(&minAltitude, sizeof(minAltitude)); + src.Read(&featureTableOffset, sizeof(featureTableOffset)); src.Read(&altitudeInfoOffset, sizeof(altitudeInfoOffset)); + src.Read(&endOffset, sizeof(endOffset)); } - static size_t GetHeaderSize() - { - return sizeof(version) + sizeof(minAltitude) + sizeof(altitudeInfoOffset); - } + // Methods below return sizes of parts of altitude section in bytes. + static size_t GetHeaderSize() { return sizeof(AltitudeHeader); } + + size_t GetAltitudeAvailabilitySize() const { return featureTableOffset - GetHeaderSize(); } + size_t GetFeatureTableSize() const { return altitudeInfoOffset - featureTableOffset; } + size_t GetAltitudeInfo() const { return endOffset - altitudeInfoOffset; } void Reset() { version = 1; minAltitude = kInvalidAltitude; + featureTableOffset = 0; altitudeInfoOffset = 0; + endOffset = 0; } TAltitudeSectionVersion version; TAltitude minAltitude; + TAltitudeSectionOffset featureTableOffset; TAltitudeSectionOffset altitudeInfoOffset; + TAltitudeSectionOffset endOffset; }; class Altitude |