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-21 17:41:00 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-07-23 10:25:12 +0300
commit03570b2f16ea5fac497ade8cebdae80552cb74fe (patch)
treeb809a9f45cbd2ffc5535256be22b0c7634b35805 /generator
parent5ecd7de277b27f7fbb708dcfa3d2f8f313d4768f (diff)
Gathering serialization and deserialization header in AltitudeHeader.
Diffstat (limited to 'generator')
-rw-r--r--generator/altitude_generator.cpp92
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);