From e58411033ec319fd0860994fad50cc2e6db4a00b Mon Sep 17 00:00:00 2001 From: Lev Dragunov Date: Fri, 4 Mar 2016 14:15:18 +0300 Subject: [PATCH] Review fixes backport. --- routing/cross_mwm_road_graph.cpp | 15 +++++++-------- routing/cross_mwm_road_graph.hpp | 4 ++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/routing/cross_mwm_road_graph.cpp b/routing/cross_mwm_road_graph.cpp index 65cdf945ac..c7dd078dd5 100644 --- a/routing/cross_mwm_road_graph.cpp +++ b/routing/cross_mwm_road_graph.cpp @@ -54,7 +54,7 @@ IRouter::ResultCode CrossMwmGraph::SetStartNode(CrossNode const & startNode) { if (IsValidEdgeWeight(weights[i])) { - vector nextCrosses = ConstructBorderCross(outgoingNodes[i], startMapping); + vector const & nextCrosses = ConstructBorderCross(outgoingNodes[i], startMapping); for (auto const & nextCross : nextCrosses) if (nextCross.toNode.IsValid()) dummyEdges.emplace_back(nextCross, weights[i]); @@ -127,8 +127,8 @@ IRouter::ResultCode CrossMwmGraph::SetFinalNode(CrossNode const & finalNode) return IRouter::NoError; } -vector CrossMwmGraph::ConstructBorderCross(OutgoingCrossNode const & startNode, - TRoutingMappingPtr const & currentMapping) const +vector const & CrossMwmGraph::ConstructBorderCross(OutgoingCrossNode const & startNode, + TRoutingMappingPtr const & currentMapping) const { // Check cached crosses. auto const key = make_pair(startNode.m_nodeId, currentMapping->GetMwmId()); @@ -138,10 +138,9 @@ vector CrossMwmGraph::ConstructBorderCross(OutgoingCrossNode const // Cache miss case. vector crosses; - if (!ConstructBorderCrossImpl(startNode, currentMapping, crosses)) - return vector(); - m_cachedNextNodes.insert(make_pair(key, crosses)); - return crosses; + ConstructBorderCrossImpl(startNode, currentMapping, crosses); + auto const inserted = m_cachedNextNodes.insert(make_pair(key, crosses)); + return inserted.first->second; } bool CrossMwmGraph::ConstructBorderCrossImpl(OutgoingCrossNode const & startNode, @@ -203,7 +202,7 @@ void CrossMwmGraph::GetOutgoingEdgesList(BorderCross const & v, EdgeWeight const outWeight = currentContext.GetAdjacencyCost(ingoingNode, node); if (outWeight != kInvalidContextEdgeWeight && outWeight != 0) { - vector targets = ConstructBorderCross(node, currentMapping); + vector const & targets = ConstructBorderCross(node, currentMapping); for (auto const & target : targets) if (target.toNode.IsValid()) adj.emplace_back(target, outWeight); diff --git a/routing/cross_mwm_road_graph.hpp b/routing/cross_mwm_road_graph.hpp index f0f0c4c1b1..e0a59911f7 100644 --- a/routing/cross_mwm_road_graph.hpp +++ b/routing/cross_mwm_road_graph.hpp @@ -120,8 +120,8 @@ public: private: // Cashing wrapper for the ConstructBorderCrossImpl function. - vector ConstructBorderCross(OutgoingCrossNode const & startNode, - TRoutingMappingPtr const & currentMapping) const; + vector const & ConstructBorderCross(OutgoingCrossNode const & startNode, + TRoutingMappingPtr const & currentMapping) const; // Pure function to construct boder cross by outgoing cross node. bool ConstructBorderCrossImpl(OutgoingCrossNode const & startNode,