/srv/osrm/osrm-backend/include/engine/guidance
NameSizeModeActions
assemble_geometry.hpp79800644editdlrm
assemble_leg.hpp93270644editdlrm
assemble_overview.hpp4460644editdlrm
assemble_route.hpp3300644editdlrm
assemble_steps.hpp196400644editdlrm
collapse_scenario_detection.hpp47060644editdlrm
collapse_turns.hpp63420644editdlrm
collapsing_utility.hpp116860644editdlrm
lane_processing.hpp8830644editdlrm
leg_geometry.hpp16850644editdlrm
postprocessing_toolkit.hpp15970644editdlrm
post_processing.hpp24880644editdlrm
route.hpp1980644editdlrm
route_leg.hpp3790644editdlrm
route_step.hpp71390644editdlrm
step_maneuver.hpp8860644editdlrm
verbosity_reduction.hpp7720644editdlrm
Edit: /srv/osrm/osrm-backend/include/engine/guidance/post_processing.hpp (2488B)
#ifndef ENGINE_GUIDANCE_POST_PROCESSING_HPP #define ENGINE_GUIDANCE_POST_PROCESSING_HPP #include "engine/datafacade/datafacade_base.hpp" #include "engine/guidance/leg_geometry.hpp" #include "engine/guidance/route_step.hpp" #include "engine/phantom_node.hpp" #include "util/attributes.hpp" #include namespace osrm::engine::guidance { // passed as none-reference to modify in-place and move out again OSRM_ATTR_WARN_UNUSED std::vector handleRoundabouts(std::vector steps); // trim initial/final segment of very short length. // This function uses in/out parameter passing to modify both steps and geometry in place. // We use this method since both steps and geometry are closely coupled logically but // are not coupled in the same way in the background. To avoid the additional overhead // of introducing intermediate structions, we resolve to the in/out scheme at this point. void trimShortSegments(std::vector &steps, LegGeometry &geometry); // assign relative locations to depart/arrive instructions OSRM_ATTR_WARN_UNUSED std::vector assignRelativeLocations(std::vector steps, const LegGeometry &geometry, const PhantomNode &source_node, const PhantomNode &target_node); // collapse suppressed instructions remaining into intersections array OSRM_ATTR_WARN_UNUSED std::vector buildIntersections(std::vector steps); // postProcess will break the connection between the leg geometry // for which a segment is supposed to represent exactly the coordinates // between routing maneuvers and the route steps itself. // If required, we can get both in sync again using this function. // Move in LegGeometry for modification in place. OSRM_ATTR_WARN_UNUSED LegGeometry resyncGeometry(LegGeometry leg_geometry, const std::vector &steps); /** * Apply maneuver override relations to the selected route. * Should be called before any other post-processing is performed * to ensure that all sequences of edge-based-nodes are still in the * steps list. * * @param steps the steps of the route */ void applyOverrides(const datafacade::BaseDataFacade &facade, std::vector &steps, const LegGeometry &geometry); } // namespace osrm::engine::guidance #endif // ENGINE_GUIDANCE_POST_PROCESSING_HPP