Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-07-21 17:41:00 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-07-23 10:25:12 +0300
commit03570b2f16ea5fac497ade8cebdae80552cb74fe (patch)
treeb809a9f45cbd2ffc5535256be22b0c7634b35805 /indexer/feature_altitude.hpp
parent5ecd7de277b27f7fbb708dcfa3d2f8f313d4768f (diff)
Gathering serialization and deserialization header in AltitudeHeader.
Diffstat (limited to 'indexer/feature_altitude.hpp')
-rw-r--r--indexer/feature_altitude.hpp51
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: