diff options
author | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-21 17:41:00 +0300 |
---|---|---|
committer | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-23 10:25:12 +0300 |
commit | 03570b2f16ea5fac497ade8cebdae80552cb74fe (patch) | |
tree | b809a9f45cbd2ffc5535256be22b0c7634b35805 /generator | |
parent | 5ecd7de277b27f7fbb708dcfa3d2f8f313d4768f (diff) |
Gathering serialization and deserialization header in AltitudeHeader.
Diffstat (limited to 'generator')
-rw-r--r-- | generator/altitude_generator.cpp | 92 |
1 files changed, 40 insertions, 52 deletions
diff --git a/generator/altitude_generator.cpp b/generator/altitude_generator.cpp index 596a461626..4459173f1b 100644 --- a/generator/altitude_generator.cpp +++ b/generator/altitude_generator.cpp @@ -21,6 +21,7 @@ #include "base/assert.hpp" #include "base/logging.hpp" +#include "base/scope_guard.hpp" #include "base/stl_helpers.hpp" #include "base/string_utils.hpp" @@ -84,49 +85,48 @@ public: } bool hasAltitude = false; - do + MY_SCOPE_GUARD(removeTmpDir, [&] () { - if (!routing::IsRoad(feature::TypesHolder(f))) - break; - - f.ParseGeometry(FeatureType::BEST_GEOMETRY); - size_t const pointsCount = f.GetPointsCount(); - if (pointsCount == 0) - break; - - TAltitudes altitudes; - bool valid = true; - TAltitude minFeatureAltitude = kInvalidAltitude; - for (size_t i = 0; i < pointsCount; ++i) + m_altitudeAvailability.push_back(hasAltitude); + }); + + if (!routing::IsRoad(feature::TypesHolder(f))) + return; + + f.ParseGeometry(FeatureType::BEST_GEOMETRY); + size_t const pointsCount = f.GetPointsCount(); + if (pointsCount == 0) + return; + + TAltitudes altitudes; + bool valid = true; + TAltitude minFeatureAltitude = kInvalidAltitude; + for (size_t i = 0; i < pointsCount; ++i) + { + TAltitude const a = m_altitudeGetter.GetAltitude(f.GetPoint(i)); + if (a == kInvalidAltitude) { - TAltitude const a = m_altitudeGetter.GetAltitude(f.GetPoint(i)); - if (a == kInvalidAltitude) - { - valid = false; - break; - } - - if (minFeatureAltitude == kInvalidAltitude) - minFeatureAltitude = a; - else - minFeatureAltitude = min(minFeatureAltitude, a); - - altitudes.push_back(a); + valid = false; + return; } - if (!valid) - break; - hasAltitude = true; - m_featureAltitudes.push_back(make_pair(id, Altitude(move(altitudes)))); - - if (m_minAltitude == kInvalidAltitude) - m_minAltitude = minFeatureAltitude; + if (minFeatureAltitude == kInvalidAltitude) + minFeatureAltitude = a; else - m_minAltitude = min(minFeatureAltitude, m_minAltitude); + minFeatureAltitude = min(minFeatureAltitude, a); + + altitudes.push_back(a); } - while(false); + if (!valid) + return; + + hasAltitude = true; + m_featureAltitudes.push_back(make_pair(id, Altitude(move(altitudes)))); - m_altitudeAvailability.push_back(hasAltitude); + if (m_minAltitude == kInvalidAltitude) + m_minAltitude = minFeatureAltitude; + else + m_minAltitude = min(minFeatureAltitude, m_minAltitude); } bool HasAltitudeInfo() const @@ -169,18 +169,6 @@ void MoveFileToAltitudeSection(string const & filePath, uint32_t fileSize, FileW } FileWriter::DeleteFileX(filePath); } - -void SerializeHeader(TAltitudeSectionVersion version, TAltitude minAltitude, - TAltitudeSectionOffset altitudeInfoOffset, FileWriter & w) -{ - w.Write(&version, sizeof(version)); - - w.Write(&minAltitude, sizeof(minAltitude)); - LOG(LINFO, ("altitudeAvailability writing minAltitude =", minAltitude)); - - w.Write(&altitudeInfoOffset, sizeof(altitudeInfoOffset)); - LOG(LINFO, ("altitudeAvailability writing altitudeInfoOffset =", altitudeInfoOffset)); -} } // namespace namespace routing @@ -246,14 +234,14 @@ void BuildRoadAltitudes(string const & baseDir, string const & countryName, IAlt // Writing section with altitude information. // Writing altitude section header. - TAltitudeSectionOffset const headerSize = sizeof(kAltitudeSectionVersion) + - sizeof(minAltitude) + sizeof(TAltitudeSectionOffset); + TAltitudeSectionOffset const headerSize = AltitudeHeader::GetHeaderSize(); TAltitudeSectionOffset const featuresTableOffset = headerSize + sizeof(altitudeAvailabilitySize) + altitudeAvailabilitySize; TAltitudeSectionOffset const altitudeInfoOffset = featuresTableOffset + sizeof(featuresTableSize) + featuresTableSize; - SerializeHeader(kAltitudeSectionVersion, processor.GetMinAltitude(), - altitudeInfoOffset + sizeof(TAltitudeSectionOffset) /* for altitude info size */, w); + AltitudeHeader header(kAltitudeSectionVersion, processor.GetMinAltitude(), + altitudeInfoOffset + sizeof(TAltitudeSectionOffset) /* for altitude info size */); + header.Serialize(w); // Coping parts of altitude sections to mwm. MoveFileToAltitudeSection(altitudeAvailabilityPath, altitudeAvailabilitySize, w); |