diff options
author | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-22 10:08:06 +0300 |
---|---|---|
committer | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-07-23 10:25:13 +0300 |
commit | 5d4ee21e4a716530886f6478080a832dca877b75 (patch) | |
tree | 7b494f490f56cd4f0d4d593a272d32ec0173e8bd /routing | |
parent | 03570b2f16ea5fac497ade8cebdae80552cb74fe (diff) |
Getting rid of MwmValue in Value contructor and other review fixes.
Diffstat (limited to 'routing')
-rw-r--r-- | routing/features_road_graph.cpp | 17 | ||||
-rw-r--r-- | routing/features_road_graph.hpp | 18 | ||||
-rw-r--r-- | routing/routing_helpers.hpp | 4 | ||||
-rw-r--r-- | routing/routing_integration_tests/bicycle_turn_test.cpp | 3 |
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, ()); } |