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:
Diffstat (limited to 'indexer/feature_altitude.hpp')
-rw-r--r--indexer/feature_altitude.hpp29
1 files changed, 19 insertions, 10 deletions
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 <class TSink>
void Serialize(TAltitude minAltitude, TSink & sink) const
{
- vector<uint32_t> deviations;
- PrepareSerializationData(minAltitude, deviations);
+ vector<uint32_t> deltas;
+ PrepareSerializationDate(minAltitude, deltas);
BitWriter<TSink> 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 <class TSource>
bool Deserialize(TAltitude minAltitude, size_t pointCount, TSource & src)
{
- vector<uint32_t> deviations(pointCount);
+ vector<uint32_t> deltas(pointCount);
BitReader<TSource> 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<uint32_t> & deviations) const;
- bool FillAltitudesByDeserializedDate(TAltitude minAltitude, vector<uint32_t> const & deviations);
+ void PrepareSerializationDate(TAltitude minAltitude, vector<uint32_t> & deltas) const;
+ bool FillAltitudesByDeserializedDate(TAltitude minAltitude, vector<uint32_t> const & deltas);
};
} // namespace feature