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-25 10:49:28 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-07-26 18:51:57 +0300
commit73fccde2d4bc0e2ae41843a1f7fb574d9ccfce65 (patch)
tree3717e981cbc1d32710d138ce2caa8d7b7083864b /indexer
parent979f48bfaf7322320801db215b1d0e3d231f8699 (diff)
Review fixes.
Diffstat (limited to 'indexer')
-rw-r--r--indexer/altitude_loader.cpp31
-rw-r--r--indexer/altitude_loader.hpp6
-rw-r--r--indexer/feature_altitude.hpp69
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