diff options
author | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-25 10:49:28 +0300 |
---|---|---|
committer | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-26 18:51:57 +0300 |
commit | 73fccde2d4bc0e2ae41843a1f7fb574d9ccfce65 (patch) | |
tree | 3717e981cbc1d32710d138ce2caa8d7b7083864b /indexer | |
parent | 979f48bfaf7322320801db215b1d0e3d231f8699 (diff) |
Review fixes.
Diffstat (limited to 'indexer')
-rw-r--r-- | indexer/altitude_loader.cpp | 31 | ||||
-rw-r--r-- | indexer/altitude_loader.hpp | 6 | ||||
-rw-r--r-- | indexer/feature_altitude.hpp | 69 |
3 files changed, 54 insertions, 52 deletions
diff --git a/indexer/altitude_loader.cpp b/indexer/altitude_loader.cpp index 6eab7b38e8..d01c719d5d 100644 --- a/indexer/altitude_loader.cpp +++ b/indexer/altitude_loader.cpp @@ -14,8 +14,8 @@ namespace { template<class TCont> -void Map(size_t dataSize, ReaderSource<FilesContainerR::TReader> & src, - TCont & cont, unique_ptr<CopiedMemoryRegion> & region) +void LoadAndMap(size_t dataSize, ReaderSource<FilesContainerR::TReader> & src, + TCont & cont, unique_ptr<CopiedMemoryRegion> & region) { vector<uint8_t> data(dataSize); src.Read(data.data(), data.size()); @@ -41,8 +41,9 @@ AltitudeLoader::AltitudeLoader(MwmValue const & mwmValue) ReaderSource<FilesContainerR::TReader> src(*m_reader); m_header.Deserialize(src); - Map(m_header.GetAltitudeAvailabilitySize(), src, m_altitudeAvailability, m_altitudeAvailabilityRegion); - Map(m_header.GetFeatureTableSize(), src, m_featureTable, m_featureTableRegion); + LoadAndMap(m_header.GetAltitudeAvailabilitySize(), src, m_altitudeAvailability, + m_altitudeAvailabilityRegion); + LoadAndMap(m_header.GetFeatureTableSize(), src, m_featureTable, m_featureTableRegion); } catch (Reader::OpenException const & e) { @@ -51,16 +52,16 @@ AltitudeLoader::AltitudeLoader(MwmValue const & mwmValue) } } -bool AltitudeLoader::IsAvailable() const +bool AltitudeLoader::HasAltitudes() const { - return m_header.minAltitude != kInvalidAltitude; + return m_header.m_minAltitude != kInvalidAltitude; } -TAltitudes const & AltitudeLoader::GetAltitudes(uint32_t featureId, size_t pointCount) const +TAltitudes const & AltitudeLoader::GetAltitudes(uint32_t featureId, size_t pointCount) { - if (!IsAvailable()) + if (!HasAltitudes()) { - // The version of mwm is less then version::Format::v8 or there's no altitude section in mwm. + // The version of mwm is less than version::Format::v8 or there's no altitude section in mwm. return m_dummy; } @@ -71,7 +72,7 @@ TAltitudes const & AltitudeLoader::GetAltitudes(uint32_t featureId, size_t point if (!m_altitudeAvailability[featureId]) { LOG(LINFO, ("Feature featureId =", featureId, "does not contain any altitude information.")); - return m_cache.insert(make_pair(featureId, TAltitudes())).first->second; + return m_cache.insert(make_pair(featureId, m_dummy)).first->second; } uint64_t const r = m_altitudeAvailability.rank(featureId); @@ -79,22 +80,22 @@ TAltitudes const & AltitudeLoader::GetAltitudes(uint32_t featureId, size_t point uint64_t const offset = m_featureTable.select(r); CHECK_LESS_OR_EQUAL(offset, m_featureTable.size(), (featureId)); - uint64_t const altitudeInfoOffsetInSection = m_header.altitudeInfoOffset + offset; + uint64_t const altitudeInfoOffsetInSection = m_header.m_altitudesOffset + offset; CHECK_LESS(altitudeInfoOffsetInSection, m_reader->Size(), ()); try { - Altitude a; + Altitudes a; ReaderSource<FilesContainerR::TReader> src(*m_reader); src.Skip(altitudeInfoOffsetInSection); - a.Deserialize(m_header.minAltitude, pointCount, src); + a.Deserialize(m_header.m_minAltitude, pointCount, src); return m_cache.insert(make_pair(featureId, a.GetAltitudes())).first->second; } catch (Reader::OpenException const & e) { - LOG(LERROR, ("Error while getting mwm data", e.Msg())); - return m_cache.insert(make_pair(featureId, TAltitudes())).first->second; + LOG(LERROR, ("Error while getting altitude data", e.Msg())); + return m_cache.insert(make_pair(featureId, m_dummy)).first->second; } } } // namespace feature diff --git a/indexer/altitude_loader.hpp b/indexer/altitude_loader.hpp index 964b19bc5a..cce768df67 100644 --- a/indexer/altitude_loader.hpp +++ b/indexer/altitude_loader.hpp @@ -16,8 +16,8 @@ class AltitudeLoader public: explicit AltitudeLoader(MwmValue const & mwmValue); - TAltitudes const & GetAltitudes(uint32_t featureId, size_t pointCount) const; - bool IsAvailable() const; + TAltitudes const & GetAltitudes(uint32_t featureId, size_t pointCount); + bool HasAltitudes() const; private: unique_ptr<CopiedMemoryRegion> m_altitudeAvailabilityRegion; @@ -27,7 +27,7 @@ private: succinct::elias_fano m_featureTable; unique_ptr<FilesContainerR::TReader> m_reader; - mutable map<uint32_t, TAltitudes> m_cache; + map<uint32_t, TAltitudes> m_cache; TAltitudes const m_dummy; AltitudeHeader m_header; }; diff --git a/indexer/feature_altitude.hpp b/indexer/feature_altitude.hpp index 3b225d04ee..f72966b967 100644 --- a/indexer/feature_altitude.hpp +++ b/indexer/feature_altitude.hpp @@ -1,5 +1,7 @@ #pragma once +#include "coding/reader.hpp" #include "coding/varint.hpp" +#include "coding/write_to_sink.hpp" #include "base/assert.hpp" @@ -11,7 +13,6 @@ namespace feature { using TAltitude = int16_t; using TAltitudes = vector<feature::TAltitude>; -using TAltitudeSectionOffset = uint32_t; TAltitude constexpr kInvalidAltitude = numeric_limits<TAltitude>::min(); @@ -27,58 +28,58 @@ struct AltitudeHeader template <class TSink> void Serialize(TSink & sink) const { - sink.Write(&version, sizeof(version)); - sink.Write(&minAltitude, sizeof(minAltitude)); - sink.Write(&featureTableOffset, sizeof(featureTableOffset)); - sink.Write(&altitudeInfoOffset, sizeof(altitudeInfoOffset)); - sink.Write(&endOffset, sizeof(endOffset)); + WriteToSink(sink, m_version); + WriteToSink(sink, m_minAltitude); + WriteToSink(sink, m_featureTableOffset); + WriteToSink(sink, m_altitudesOffset); + WriteToSink(sink, m_endOffset); } template <class TSource> void Deserialize(TSource & src) { - src.Read(&version, sizeof(version)); - src.Read(&minAltitude, sizeof(minAltitude)); - src.Read(&featureTableOffset, sizeof(featureTableOffset)); - src.Read(&altitudeInfoOffset, sizeof(altitudeInfoOffset)); - src.Read(&endOffset, sizeof(endOffset)); + m_version = ReadPrimitiveFromSource<TAltitudeSectionVersion>(src); + m_minAltitude = ReadPrimitiveFromSource<TAltitude>(src); + m_featureTableOffset = ReadPrimitiveFromSource<uint32_t>(src); + m_altitudesOffset = ReadPrimitiveFromSource<uint32_t>(src); + m_endOffset = ReadPrimitiveFromSource<uint32_t>(src); } // Methods below return sizes of parts of altitude section in bytes. - static size_t GetHeaderSize() { return sizeof(AltitudeHeader); } - - size_t GetAltitudeAvailabilitySize() const { return featureTableOffset - GetHeaderSize(); } - size_t GetFeatureTableSize() const { return altitudeInfoOffset - featureTableOffset; } - size_t GetAltitudeInfo() const { return endOffset - altitudeInfoOffset; } + size_t GetAltitudeAvailabilitySize() const { return m_featureTableOffset - sizeof(AltitudeHeader); } + size_t GetFeatureTableSize() const { return m_altitudesOffset - m_featureTableOffset; } + size_t GetAltitudeInfo() const { return m_endOffset - m_altitudesOffset; } void Reset() { - version = 1; - minAltitude = kInvalidAltitude; - featureTableOffset = 0; - altitudeInfoOffset = 0; - endOffset = 0; + m_version = 0; + m_minAltitude = kInvalidAltitude; + m_featureTableOffset = 0; + m_altitudesOffset = 0; + m_endOffset = 0; } - TAltitudeSectionVersion version; - TAltitude minAltitude; - TAltitudeSectionOffset featureTableOffset; - TAltitudeSectionOffset altitudeInfoOffset; - TAltitudeSectionOffset endOffset; + TAltitudeSectionVersion m_version; + TAltitude m_minAltitude; + uint32_t m_featureTableOffset; + uint32_t m_altitudesOffset; + uint32_t m_endOffset; }; -class Altitude +static_assert(sizeof(AltitudeHeader) == 16, "Wrong header size of altitude section."); + +class Altitudes { public: - Altitude() = default; - explicit Altitude(TAltitudes const & altitudes) : m_altitudes(altitudes) {} + Altitudes() = default; + explicit Altitudes(TAltitudes const & altitudes) : m_altitudes(altitudes) {} template <class TSink> void Serialize(TAltitude minAltitude, TSink & sink) const { CHECK(!m_altitudes.empty(), ()); - WriteVarInt(sink, static_cast<int32_t>(m_altitudes[0] - static_cast<int32_t>(minAltitude))); + 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])); } @@ -94,17 +95,17 @@ public: } m_altitudes.resize(pointCount); - TAltitude prevPntAltitude = minAltitude; + TAltitude prevAltitude = minAltitude; for (size_t i = 0; i < pointCount; ++i) { - m_altitudes[i] = static_cast<TAltitude>(ReadVarInt<int32_t>(src) + prevPntAltitude); + m_altitudes[i] = static_cast<TAltitude>(ReadVarInt<int32_t>(src) + prevAltitude); if (m_altitudes[i] < minAltitude) { ASSERT(false, ()); m_altitudes.clear(); return; } - prevPntAltitude = m_altitudes[i]; + prevAltitude = m_altitudes[i]; } } @@ -114,7 +115,7 @@ public: } private: - /// \note |m_altitudes| is a vector of feature point altitudes. There's two posibilities: + /// \note |m_altitudes| is a vector of feature point altitudes. There's two possibilities: /// * |m_altitudes| is empty. It means there is no altitude information for this feature. /// * size of |m_pointAlt| is equal to the number of this feature's points. /// In this case the i'th element of |m_pointAlt| corresponds to the altitude of the |