From 6cf3bf60339f91c133755e0b1a46b69583ae9091 Mon Sep 17 00:00:00 2001 From: Vladimir Byko-Ianko Date: Wed, 3 Aug 2016 10:14:29 +0300 Subject: Review fixes. --- indexer/feature_altitude.hpp | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'indexer/feature_altitude.hpp') diff --git a/indexer/feature_altitude.hpp b/indexer/feature_altitude.hpp index 755ecb0be3..ceca72aa9f 100644 --- a/indexer/feature_altitude.hpp +++ b/indexer/feature_altitude.hpp @@ -83,24 +83,33 @@ public: template void Serialize(TAltitude minAltitude, TSink & sink) const { - vector deviations; - PrepareSerializationData(minAltitude, deviations); + vector deltas; + PrepareSerializationDate(minAltitude, deltas); BitWriter bits(sink); - for (auto const d : deviations) - coding::DeltaCoder::Encode(bits, d); + for (auto const d : deltas) + coding::DeltaCoder::Encode(bits, d + 1 /* making it greater than zero */); } template bool Deserialize(TAltitude minAltitude, size_t pointCount, TSource & src) { - vector deviations(pointCount); + vector deltas(pointCount); BitReader bits(src); for (size_t i = 0; i < pointCount; ++i) - deviations[i] = coding::DeltaCoder::Decode(bits); - - return FillAltitudesByDeserializedDate(minAltitude, deviations); + { + uint32_t const decoded = coding::DeltaCoder::Decode(bits); + if (decoded == 0) + { + ASSERT(false, (i)); + m_altitudes.clear(); + return false; + } + deltas[i] = decoded - 1 /* recovering value */; + } + + return FillAltitudesByDeserializedDate(minAltitude, deltas); } /// \note |m_altitudes| is a vector of feature point altitudes. There's two possibilities: @@ -110,7 +119,7 @@ public: TAltitudes m_altitudes; private: - void PrepareSerializationData(TAltitude minAltitude, vector & deviations) const; - bool FillAltitudesByDeserializedDate(TAltitude minAltitude, vector const & deviations); + void PrepareSerializationDate(TAltitude minAltitude, vector & deltas) const; + bool FillAltitudesByDeserializedDate(TAltitude minAltitude, vector const & deltas); }; } // namespace feature -- cgit v1.2.3