diff options
author | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-22 10:08:06 +0300 |
---|---|---|
committer | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-23 10:25:13 +0300 |
commit | 5d4ee21e4a716530886f6478080a832dca877b75 (patch) | |
tree | 7b494f490f56cd4f0d4d593a272d32ec0173e8bd /indexer/feature_altitude.hpp | |
parent | 03570b2f16ea5fac497ade8cebdae80552cb74fe (diff) |
Getting rid of MwmValue in Value contructor and other review fixes.
Diffstat (limited to 'indexer/feature_altitude.hpp')
-rw-r--r-- | indexer/feature_altitude.hpp | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/indexer/feature_altitude.hpp b/indexer/feature_altitude.hpp index b11c922ef5..52f1032f53 100644 --- a/indexer/feature_altitude.hpp +++ b/indexer/feature_altitude.hpp @@ -3,6 +3,7 @@ #include "base/logging.hpp" +#include "std/cstdint.hpp" #include "std/limits.hpp" #include "std/vector.hpp" @@ -64,51 +65,54 @@ class Altitude { public: Altitude() = default; - explicit Altitude(TAltitudes const & altitudes) : m_pointAlt(altitudes) {} + explicit Altitude(TAltitudes const & altitudes) : m_altitudes(altitudes) {} template <class TSink> void Serialize(TAltitude minAltitude, TSink & sink) const { - CHECK(!m_pointAlt.empty(), ()); + CHECK(!m_altitudes.empty(), ()); - TAltitude prevPntAltitude = minAltitude; - for (size_t i = 0; i < m_pointAlt.size(); ++i) - { - WriteVarInt(sink, static_cast<int32_t>(static_cast<int32_t>(m_pointAlt[i] - prevPntAltitude))); - prevPntAltitude = m_pointAlt[i]; - } + WriteVarInt(sink, static_cast<int32_t>(m_altitudes[0] - static_cast<int32_t>(minAltitude))); + for (size_t i = 1; i < m_altitudes.size(); ++i) + WriteVarInt(sink, static_cast<int32_t>(m_altitudes[i]) - static_cast<int32_t>(m_altitudes[i - 1])); } template <class TSource> void Deserialize(TAltitude minAltitude, size_t pointCount, TSource & src) { - m_pointAlt.clear(); + m_altitudes.clear(); if (pointCount == 0) { ASSERT(false, ()); return; } - m_pointAlt.resize(pointCount); + m_altitudes.resize(pointCount); TAltitude prevPntAltitude = minAltitude; for (size_t i = 0; i < pointCount; ++i) { - m_pointAlt[i] = static_cast<TAltitude>(ReadVarInt<int32_t>(src) + prevPntAltitude); - prevPntAltitude = m_pointAlt[i]; + m_altitudes[i] = static_cast<TAltitude>(ReadVarInt<int32_t>(src) + prevPntAltitude); + if (m_altitudes[i] < minAltitude) + { + ASSERT(false, ()); + m_altitudes.clear(); + return; + } + prevPntAltitude = m_altitudes[i]; } } TAltitudes GetAltitudes() const { - return m_pointAlt; + return m_altitudes; } private: - /// \note |m_pointAlt| is a vector of feature point altitudes. There's two posibilities: - /// * |m_pointAlt| is empty. It means no altitude information defines. - /// * size of |m_pointAlt| is equal to feature point number. In that case every item of - /// |m_pointAlt| defines altitude in meters for every feature point. If altitude is not defined + /// \note |m_altitudes| is a vector of feature point altitudes. There's two posibilities: + /// * |m_altitudes| is empty. It means no altitude information defines. + /// * size of |m_altitudes| is equal to feature point number. In that case every item of + /// |m_altitudes| defines altitude in meters for every feature point. If altitude is not defined /// for some feature point corresponding vector items are equel to |kInvalidAltitude| - TAltitudes m_pointAlt; + TAltitudes m_altitudes; }; } // namespace feature |