From 18bf84b87f95af7840373344e324720fa3b92ab1 Mon Sep 17 00:00:00 2001 From: tatiana-kondakova Date: Mon, 13 Nov 2017 15:38:50 +0300 Subject: [PATCH] Read RoadAccess for proper vehicle type --- generator/routing_index_generator.cpp | 2 +- routing/index_graph_loader.cpp | 24 +++++++++++++----------- routing/index_graph_loader.hpp | 2 +- track_analyzing/track_matcher.cpp | 2 +- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/generator/routing_index_generator.cpp b/generator/routing_index_generator.cpp index e44f6b286e..685dd5b05d 100644 --- a/generator/routing_index_generator.cpp +++ b/generator/routing_index_generator.cpp @@ -287,7 +287,7 @@ void FillWeights(string const & path, string const & mwmFile, string const & cou EdgeEstimator::Create(VehicleType::Car, *vehicleModel, nullptr /* trafficStash */)); MwmValue mwmValue(LocalCountryFile(path, platform::CountryFile(country), 0 /* version */)); - DeserializeIndexGraph(mwmValue, kCarMask, graph); + DeserializeIndexGraph(mwmValue, VehicleType::Car, graph); map> weights; auto const numEnters = connector.GetEnters().size(); diff --git a/routing/index_graph_loader.cpp b/routing/index_graph_loader.cpp index 26e70e7e82..42fb13f23c 100644 --- a/routing/index_graph_loader.cpp +++ b/routing/index_graph_loader.cpp @@ -29,7 +29,7 @@ public: private: IndexGraph & Load(NumMwmId mwmId); - VehicleMask m_vehicleMask; + VehicleType m_vehicleType; bool m_loadAltitudes; Index & m_index; shared_ptr m_numMwmIds; @@ -38,10 +38,11 @@ private: unordered_map> m_graphs; }; -IndexGraphLoaderImpl::IndexGraphLoaderImpl(VehicleType vehicleType, bool loadAltitudes, shared_ptr numMwmIds, - shared_ptr vehicleModelFactory, - shared_ptr estimator, Index & index) - : m_vehicleMask(GetVehicleMask(vehicleType)) +IndexGraphLoaderImpl::IndexGraphLoaderImpl( + VehicleType vehicleType, bool loadAltitudes, shared_ptr numMwmIds, + shared_ptr vehicleModelFactory, + shared_ptr estimator, Index & index) + : m_vehicleType(vehicleType) , m_loadAltitudes(loadAltitudes) , m_index(index) , m_numMwmIds(numMwmIds) @@ -79,7 +80,7 @@ IndexGraph & IndexGraphLoaderImpl::Load(NumMwmId numMwmId) my::Timer timer; MwmValue const & mwmValue = *handle.GetValue(); - DeserializeIndexGraph(mwmValue, m_vehicleMask, graph); + DeserializeIndexGraph(mwmValue, m_vehicleType, graph); m_graphs[numMwmId] = move(graphPtr); LOG(LINFO, (ROUTING_FILE_TAG, "section for", file.GetName(), "loaded in", timer.ElapsedSeconds(), "seconds")); @@ -88,7 +89,8 @@ IndexGraph & IndexGraphLoaderImpl::Load(NumMwmId numMwmId) void IndexGraphLoaderImpl::Clear() { m_graphs.clear(); } -bool ReadRoadAccessFromMwm(MwmValue const & mwmValue, RoadAccess & roadAccess) +bool ReadRoadAccessFromMwm(MwmValue const & mwmValue, VehicleType vehicleType, + RoadAccess & roadAccess) { if (!mwmValue.m_cont.IsExist(ROAD_ACCESS_FILE_TAG)) return false; @@ -98,7 +100,7 @@ bool ReadRoadAccessFromMwm(MwmValue const & mwmValue, RoadAccess & roadAccess) auto const reader = mwmValue.m_cont.GetReader(ROAD_ACCESS_FILE_TAG); ReaderSource src(reader); - RoadAccessSerializer::Deserialize(src, VehicleType::Car, roadAccess); + RoadAccessSerializer::Deserialize(src, vehicleType, roadAccess); } catch (Reader::OpenException const & e) { @@ -121,17 +123,17 @@ unique_ptr IndexGraphLoader::Create( estimator, index); } -void DeserializeIndexGraph(MwmValue const & mwmValue, VehicleMask vehicleMask, IndexGraph & graph) +void DeserializeIndexGraph(MwmValue const & mwmValue, VehicleType vehicleType, IndexGraph & graph) { FilesContainerR::TReader reader(mwmValue.m_cont.GetReader(ROUTING_FILE_TAG)); ReaderSource src(reader); - IndexGraphSerializer::Deserialize(graph, src, vehicleMask); + IndexGraphSerializer::Deserialize(graph, src, GetVehicleMask(vehicleType)); RestrictionLoader restrictionLoader(mwmValue, graph); if (restrictionLoader.HasRestrictions()) graph.SetRestrictions(restrictionLoader.StealRestrictions()); RoadAccess roadAccess; - if (ReadRoadAccessFromMwm(mwmValue, roadAccess)) + if (ReadRoadAccessFromMwm(mwmValue, vehicleType, roadAccess)) graph.SetRoadAccess(move(roadAccess)); } } // namespace routing diff --git a/routing/index_graph_loader.hpp b/routing/index_graph_loader.hpp index 073764e1f5..768cf09476 100644 --- a/routing/index_graph_loader.hpp +++ b/routing/index_graph_loader.hpp @@ -27,5 +27,5 @@ public: std::shared_ptr estimator, Index & index); }; -void DeserializeIndexGraph(MwmValue const & mwmValue, VehicleMask vehicleMask, IndexGraph & graph); +void DeserializeIndexGraph(MwmValue const & mwmValue, VehicleType vehicleType, IndexGraph & graph); } // namespace routing diff --git a/track_analyzing/track_matcher.cpp b/track_analyzing/track_matcher.cpp index d862b9943c..4232ac6fa4 100644 --- a/track_analyzing/track_matcher.cpp +++ b/track_analyzing/track_matcher.cpp @@ -66,7 +66,7 @@ TrackMatcher::TrackMatcher(storage::Storage const & storage, NumMwmId mwmId, GeometryLoader::Create(m_index, handle, m_vehicleModel, false /* loadAltitudes */), EdgeEstimator::Create(VehicleType::Car, *m_vehicleModel, nullptr /* trafficStash */)); - DeserializeIndexGraph(*handle.GetValue(), kCarMask, *m_graph); + DeserializeIndexGraph(*handle.GetValue(), VehicleType::Car, *m_graph); } void TrackMatcher::MatchTrack(vector const & track, vector & matchedTracks)