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-22 10:08:06 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-07-23 10:25:13 +0300
commit5d4ee21e4a716530886f6478080a832dca877b75 (patch)
tree7b494f490f56cd4f0d4d593a272d32ec0173e8bd /routing
parent03570b2f16ea5fac497ade8cebdae80552cb74fe (diff)
Getting rid of MwmValue in Value contructor and other review fixes.
Diffstat (limited to 'routing')
-rw-r--r--routing/features_road_graph.cpp17
-rw-r--r--routing/features_road_graph.hpp18
-rw-r--r--routing/routing_helpers.hpp4
-rw-r--r--routing/routing_integration_tests/bicycle_turn_test.cpp3
4 files changed, 24 insertions, 18 deletions
diff --git a/routing/features_road_graph.cpp b/routing/features_road_graph.cpp
index 0c4ed59023..e425508393 100644
--- a/routing/features_road_graph.cpp
+++ b/routing/features_road_graph.cpp
@@ -258,12 +258,17 @@ void FeaturesRoadGraph::ExtractRoadInfo(FeatureID const & featureId, FeatureType
double speedKMPH, RoadInfo & ri) const
{
Value const & value = LockFeatureMwm(featureId);
+ if (!value.IsAlive())
+ {
+ ASSERT(false, ());
+ return;
+ }
ri.m_bidirectional = !IsOneWay(ft);
ri.m_speedKMPH = speedKMPH;
ft.ParseGeometry(FeatureType::BEST_GEOMETRY);
- feature::TAltitudes altitudes = value.altitudeLoader.GetAltitude(featureId.m_index, ft.GetPointsCount());
+ feature::TAltitudes altitudes = value.altitudeLoader->GetAltitude(featureId.m_index, ft.GetPointsCount());
size_t const pointsCount = ft.GetPointsCount();
if (altitudes.size() != pointsCount)
@@ -329,14 +334,6 @@ FeaturesRoadGraph::Value const & FeaturesRoadGraph::LockFeatureMwm(FeatureID con
if (itr != m_mwmLocks.end())
return itr->second;
- MwmSet::MwmHandle mwmHandle = m_index.GetMwmHandleById(mwmId);
- ASSERT(mwmHandle.IsAlive(), ());
-
- MwmValue * mwmValue = nullptr;
- if (mwmHandle.IsAlive())
- mwmValue = mwmHandle.GetValue<MwmValue>();
-
- Value value(move(mwmHandle), mwmValue);
- return m_mwmLocks.insert(make_pair(move(mwmId), move(value))).first->second;
+ return m_mwmLocks.insert(make_pair(move(mwmId), Value(m_index.GetMwmHandleById(mwmId)))).first->second;
}
} // namespace routing
diff --git a/routing/features_road_graph.hpp b/routing/features_road_graph.hpp
index 753955718a..819f01ace0 100644
--- a/routing/features_road_graph.hpp
+++ b/routing/features_road_graph.hpp
@@ -81,13 +81,25 @@ private:
struct Value
{
- Value(MwmSet::MwmHandle && handle, MwmValue const * mwmValue)
- : mwmHandle(move(handle)), altitudeLoader(mwmValue)
+ Value() = default;
+ Value(MwmSet::MwmHandle && handle)
+ : mwmHandle(move(handle))
{
+ if (!mwmHandle.IsAlive())
+ {
+ ASSERT(false, ());
+ return;
+ }
+ altitudeLoader = make_unique<feature::AltitudeLoader>(mwmHandle.GetValue<MwmValue>());
+ }
+
+ bool IsAlive() const
+ {
+ return mwmHandle.IsAlive() && altitudeLoader && altitudeLoader->IsAvailable();
}
MwmSet::MwmHandle mwmHandle;
- feature::AltitudeLoader altitudeLoader;
+ unique_ptr<feature::AltitudeLoader> altitudeLoader;
};
bool IsRoad(FeatureType const & ft) const;
diff --git a/routing/routing_helpers.hpp b/routing/routing_helpers.hpp
index ef6c9d5e40..49acc0417a 100644
--- a/routing/routing_helpers.hpp
+++ b/routing/routing_helpers.hpp
@@ -7,8 +7,8 @@
namespace routing
{
/// \returns true when there exists a routing mode where the feature with |types| can be used.
-template <class TList>
-bool IsRoad(TList const & types)
+template <class TTypes>
+bool IsRoad(TTypes const & types)
{
return CarModel::Instance().HasRoadType(types) ||
PedestrianModel::DefaultInstance().HasRoadType(types) ||
diff --git a/routing/routing_integration_tests/bicycle_turn_test.cpp b/routing/routing_integration_tests/bicycle_turn_test.cpp
index 350a29b0e4..88fa24532d 100644
--- a/routing/routing_integration_tests/bicycle_turn_test.cpp
+++ b/routing/routing_integration_tests/bicycle_turn_test.cpp
@@ -59,9 +59,6 @@ UNIT_TEST(RussiaMoscowSevTushinoParkBicycleOnePointTurnTest)
TRouteResult const routeResult =
integration::CalculateRoute(integration::GetBicycleComponents(), point, {0.0, 0.0}, point);
- Route const & route = *routeResult.first;
- UNUSED_VALUE(route);
-
IRouter::ResultCode const result = routeResult.second;
TEST_EQUAL(result, IRouter::IRouter::RouteNotFound, ());
}