From 4100abc69e5aae53f8e2ee01c3c52164650e0ca5 Mon Sep 17 00:00:00 2001 From: vng Date: Sun, 13 Jul 2014 20:34:27 +0200 Subject: [routing] Added more constructors to the Route class. --- geometry/polyline2d.hpp | 4 ++++ routing/helicopter_router.cpp | 4 ++-- routing/road_graph_router.cpp | 2 +- routing/route.cpp | 6 +----- routing/route.hpp | 24 ++++++++++++++++++++++-- routing/routing_tests/dijkstra_router_test.cpp | 2 +- 6 files changed, 31 insertions(+), 11 deletions(-) diff --git a/geometry/polyline2d.hpp b/geometry/polyline2d.hpp index a5da9877ed..6fca13d213 100644 --- a/geometry/polyline2d.hpp +++ b/geometry/polyline2d.hpp @@ -22,6 +22,10 @@ public: { ASSERT_GREATER(m_points.size(), 1, ()); } + template PolylineT(IterT beg, IterT end) : m_points(beg, end) + { + ASSERT_GREATER(m_points.size(), 1, ()); + } double GetLength() const { diff --git a/routing/helicopter_router.cpp b/routing/helicopter_router.cpp index 6aa4251e59..633e3ebeab 100644 --- a/routing/helicopter_router.cpp +++ b/routing/helicopter_router.cpp @@ -14,8 +14,8 @@ void HelicopterRouter::SetFinalPoint(m2::PointD const & finalPt) void HelicopterRouter::CalculateRoute(m2::PointD const & startingPt, ReadyCallback const & callback) { - m2::PointD points[] = {startingPt, m_finalPt}; - Route route(GetName(), vector(&points[0], &points[0] + ARRAY_SIZE(points)), my::FormatCurrentTime()); + m2::PointD points[] = { startingPt, m_finalPt }; + Route route(GetName(), points, points + ARRAY_SIZE(points), my::FormatCurrentTime()); callback(route); } diff --git a/routing/road_graph_router.cpp b/routing/road_graph_router.cpp index cbb0cea273..02a64b82b4 100644 --- a/routing/road_graph_router.cpp +++ b/routing/road_graph_router.cpp @@ -110,7 +110,7 @@ void RoadGraphRouter::CalculateRoute(m2::PointD const & startPt, ReadyCallback c vector routePos; CalculateRoute(startPos, routePos); - Route route; + Route route(GetName()); m_pRoadGraph->ReconstructPath(routePos, route); callback(route); } diff --git a/routing/route.cpp b/routing/route.cpp index e4b7a17f24..a17509a018 100644 --- a/routing/route.cpp +++ b/routing/route.cpp @@ -1,12 +1,8 @@ #include "route.hpp" -namespace routing -{ -Route::Route(string const & router, vector const & points, string const & name) - : m_router(router), m_poly(points), m_name(name) +namespace routing { -} string DebugPrint(Route const & r) { diff --git a/routing/route.hpp b/routing/route.hpp index eb9d9848c6..c368b1d027 100644 --- a/routing/route.hpp +++ b/routing/route.hpp @@ -12,8 +12,28 @@ namespace routing class Route { public: - Route() {} - Route(string const & router, vector const & points, string const & name = ""); + explicit Route(string const & router, string const & name = string()) + : m_router(router), m_name(name) + { + } + + template + Route(string const & router, IterT beg, IterT end, + string const & name = string()) + : m_router(router), m_poly(beg, end), m_name(name) + { + } + + Route(string const & router, vector const & points, + string const & name = string()) + : m_router(router), m_poly(points), m_name(name) + { + } + + template void SetGeometry(IterT beg, IterT end) + { + m2::PolylineD(beg, end).Swap(m_poly); + } string const & GetRouterId() const { return m_router; } m2::PolylineD const & GetPoly() const { return m_poly; } diff --git a/routing/routing_tests/dijkstra_router_test.cpp b/routing/routing_tests/dijkstra_router_test.cpp index 9ea4ab84d4..329f642ebc 100644 --- a/routing/routing_tests/dijkstra_router_test.cpp +++ b/routing/routing_tests/dijkstra_router_test.cpp @@ -55,7 +55,7 @@ void TestDijkstraRouterMWM(RoadPos (&finalPos)[finalPosSize], router.CalculateRoute(startV, result); LOG(LDEBUG, (result)); - Route route; + Route route(router.GetName()); tester.GetGraph()->ReconstructPath(result, route); LOG(LDEBUG, (route)); TEST_EQUAL(route.GetPoly().GetSize(), pointsCount, ()); -- cgit v1.2.3