diff --git a/include/engine/api/json_factory.hpp b/include/engine/api/json_factory.hpp index 6181fd1b9..f3e4dcb03 100644 --- a/include/engine/api/json_factory.hpp +++ b/include/engine/api/json_factory.hpp @@ -4,6 +4,11 @@ #include "extractor/turn_instructions.hpp" #include "extractor/travel_mode.hpp" #include "engine/polyline_compressor.hpp" +#include "engine/guidance/route_step.hpp" +#include "engine/guidance/step_maneuver.hpp" +#include "engine/guidance/route_leg.hpp" +#include "engine/guidance/route.hpp" +#include "engine/guidance/leg_geometry.hpp" #include "util/coordinate.hpp" #include "util/json_container.hpp" @@ -20,15 +25,6 @@ namespace engine struct Hint; -namespace guidance -{ -class RouteLeg; -class RouteStep; -class StepManeuver; -class Route; -class LegGeometry; -} - namespace api { namespace json @@ -62,19 +58,19 @@ util::json::Object makeGeoJSONLineString(ForwardIter begin, ForwardIter end) util::json::Object makeStepManeuver(const guidance::StepManeuver &maneuver); -util::json::Object makeRouteStep(guidance::RouteStep &&step, +util::json::Object makeRouteStep(guidance::RouteStep step, boost::optional geometry); util::json::Object makeRoute(const guidance::Route &route, - util::json::Array &&legs, + util::json::Array legs, boost::optional geometry); util::json::Object -makeWaypoint(const util::Coordinate location, std::string &&name, const Hint &hint); +makeWaypoint(const util::Coordinate location, std::string name, const Hint &hint); -util::json::Object makeRouteLeg(guidance::RouteLeg &&leg, util::json::Array &&steps); +util::json::Object makeRouteLeg(guidance::RouteLeg leg, util::json::Array steps); -util::json::Array makeRouteLegs(std::vector &&legs, +util::json::Array makeRouteLegs(std::vector legs, std::vector step_geometries); } } diff --git a/src/engine/api/json_factory.cpp b/src/engine/api/json_factory.cpp index 5b8df3f2e..fcf327045 100644 --- a/src/engine/api/json_factory.cpp +++ b/src/engine/api/json_factory.cpp @@ -1,10 +1,5 @@ #include "engine/api/json_factory.hpp" -#include "engine/guidance/route_step.hpp" -#include "engine/guidance/step_maneuver.hpp" -#include "engine/guidance/route_leg.hpp" -#include "engine/guidance/route.hpp" -#include "engine/guidance/leg_geometry.hpp" #include "engine/polyline_compressor.hpp" #include "engine/hint.hpp" @@ -171,20 +166,20 @@ util::json::Object makeStepManeuver(const guidance::StepManeuver &maneuver) return step_maneuver; } -util::json::Object makeRouteStep(guidance::RouteStep &&step, util::json::Value geometry) +util::json::Object makeRouteStep(guidance::RouteStep step, util::json::Value geometry) { util::json::Object route_step; - route_step.values["distance"] = step.distance; - route_step.values["duration"] = step.duration; + route_step.values["distance"] = std::move(step.distance); + route_step.values["duration"] = std::move(step.duration); route_step.values["name"] = std::move(step.name); - route_step.values["mode"] = detail::modeToString(step.mode); - route_step.values["maneuver"] = makeStepManeuver(step.maneuver); + route_step.values["mode"] = detail::modeToString(std::move(step.mode)); + route_step.values["maneuver"] = makeStepManeuver(std::move(step.maneuver)); route_step.values["geometry"] = std::move(geometry); return route_step; } util::json::Object makeRoute(const guidance::Route &route, - util::json::Array &&legs, + util::json::Array legs, boost::optional geometry) { util::json::Object json_route; @@ -193,13 +188,12 @@ util::json::Object makeRoute(const guidance::Route &route, json_route.values["legs"] = std::move(legs); if (geometry) { - json_route.values["geometry"] = std::move(*geometry); + json_route.values["geometry"] = *std::move(geometry); } return json_route; } -util::json::Object -makeWaypoint(const util::Coordinate location, std::string &&name, const Hint &hint) +util::json::Object makeWaypoint(const util::Coordinate location, std::string name, const Hint &hint) { util::json::Object waypoint; waypoint.values["location"] = detail::coordinateToLonLat(location); @@ -208,29 +202,29 @@ makeWaypoint(const util::Coordinate location, std::string &&name, const Hint &hi return waypoint; } -util::json::Object makeRouteLeg(guidance::RouteLeg &&leg, util::json::Array &&steps) +util::json::Object makeRouteLeg(guidance::RouteLeg leg, util::json::Array steps) { util::json::Object route_leg; - route_leg.values["distance"] = leg.distance; - route_leg.values["duration"] = leg.duration; + route_leg.values["distance"] = std::move(leg.distance); + route_leg.values["duration"] = std::move(leg.duration); route_leg.values["summary"] = std::move(leg.summary); route_leg.values["steps"] = std::move(steps); return route_leg; } -util::json::Array makeRouteLegs(std::vector &&legs, +util::json::Array makeRouteLegs(std::vector legs, std::vector step_geometries) { util::json::Array json_legs; auto step_geometry_iter = step_geometries.begin(); for (const auto idx : boost::irange(0UL, legs.size())) { - auto &&leg = std::move(legs[idx]); + auto leg = std::move(legs[idx]); util::json::Array json_steps; json_steps.values.reserve(leg.steps.size()); std::transform( std::make_move_iterator(leg.steps.begin()), std::make_move_iterator(leg.steps.end()), - std::back_inserter(json_steps.values), [&step_geometry_iter](guidance::RouteStep &&step) + std::back_inserter(json_steps.values), [&step_geometry_iter](guidance::RouteStep step) { return makeRouteStep(std::move(step), std::move(*step_geometry_iter++)); });