MCPcopy Create free account
hub / github.com/Project-OSRM/osrm-backend / makeRouteLegs

Function makeRouteLegs

src/engine/api/json_factory.cpp:284–316  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

282}
283
284util::json::Array makeRouteLegs(std::vector<guidance::RouteLeg> legs,
285 std::vector<util::json::Value> leg_geometries,
286 std::vector<util::json::Value> step_geometries,
287 std::vector<util::json::Object> annotations)
288{
289 util::json::Array json_legs;
290 auto step_geometry_iter = step_geometries.begin();
291 for (const auto idx : util::irange<std::size_t>(0UL, legs.size()))
292 {
293 auto leg = std::move(legs[idx]);
294 util::json::Array json_steps;
295 json_steps.values.reserve(leg.steps.size());
296 std::transform(std::make_move_iterator(leg.steps.begin()),
297 std::make_move_iterator(leg.steps.end()),
298 std::back_inserter(json_steps.values),
299 [&step_geometry_iter](guidance::RouteStep step) {
300 return makeRouteStep(std::move(step), std::move(*step_geometry_iter++));
301 });
302 std::optional<util::json::Object> annotation;
303 std::optional<util::json::Value> leg_geometry;
304 if (leg_geometries.size() > 0)
305 {
306 leg_geometry = std::move(leg_geometries[idx]);
307 }
308 if (annotations.size() > 0)
309 {
310 annotation = std::move(annotations[idx]);
311 }
312 json_legs.values.push_back(makeRouteLeg(
313 std::move(leg), std::move(json_steps), std::move(leg_geometry), std::move(annotation)));
314 }
315 return json_legs;
316}
317} // namespace osrm::engine::api::json

Callers 1

MakeRouteMethod · 0.85

Calls 7

makeRouteStepFunction · 0.85
makeRouteLegFunction · 0.85
beginMethod · 0.45
sizeMethod · 0.45
reserveMethod · 0.45
endMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected