diff options
author | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-21 17:41:00 +0300 |
---|---|---|
committer | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-23 10:25:12 +0300 |
commit | 03570b2f16ea5fac497ade8cebdae80552cb74fe (patch) | |
tree | b809a9f45cbd2ffc5535256be22b0c7634b35805 /indexer/feature_altitude.hpp | |
parent | 5ecd7de277b27f7fbb708dcfa3d2f8f313d4768f (diff) |
Gathering serialization and deserialization header in AltitudeHeader.
Diffstat (limited to 'indexer/feature_altitude.hpp')
-rw-r--r-- | indexer/feature_altitude.hpp | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/indexer/feature_altitude.hpp b/indexer/feature_altitude.hpp index 64ec8161cf..b11c922ef5 100644 --- a/indexer/feature_altitude.hpp +++ b/indexer/feature_altitude.hpp @@ -1,7 +1,8 @@ #pragma once - #include "coding/varint.hpp" +#include "base/logging.hpp" + #include "std/limits.hpp" #include "std/vector.hpp" @@ -9,8 +10,56 @@ namespace feature { using TAltitude = int16_t; using TAltitudes = vector<feature::TAltitude>; +using TAltitudeSectionVersion = uint16_t; +using TAltitudeSectionOffset = uint32_t; + TAltitude constexpr kInvalidAltitude = numeric_limits<TAltitude>::min(); +struct AltitudeHeader +{ + 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(&altitudeInfoOffset, sizeof(altitudeInfoOffset)); + } + + template <class TSource> + void Deserialize(TSource & src) + { + src.Read(&version, sizeof(version)); + src.Read(&minAltitude, sizeof(minAltitude)); + src.Read(&altitudeInfoOffset, sizeof(altitudeInfoOffset)); + } + + static size_t GetHeaderSize() + { + return sizeof(version) + sizeof(minAltitude) + sizeof(altitudeInfoOffset); + } + + void Reset() + { + version = 1; + minAltitude = kInvalidAltitude; + altitudeInfoOffset = 0; + } + + TAltitudeSectionVersion version; + TAltitude minAltitude; + TAltitudeSectionOffset altitudeInfoOffset; +}; + class Altitude { public: |