| 716 | */ |
| 717 | |
| 718 | EdgeID Extractor::BuildEdgeExpandedGraph( |
| 719 | // input data |
| 720 | const util::NodeBasedDynamicGraph &node_based_graph, |
| 721 | const std::vector<util::Coordinate> &coordinates, |
| 722 | const CompressedEdgeContainer &compressed_edge_container, |
| 723 | const RestrictionGraph &restriction_graph, |
| 724 | const std::unordered_set<EdgeID> &segregated_edges, |
| 725 | const StringTable &string_table, |
| 726 | const std::vector<UnresolvedManeuverOverride> &maneuver_overrides, |
| 727 | const LaneDescriptionMap &turn_lane_map, |
| 728 | // for calculating turn penalties |
| 729 | ScriptingEnvironment &scripting_environment, |
| 730 | // output data |
| 731 | EdgeBasedNodeDataContainer &edge_based_nodes_container, |
| 732 | std::vector<EdgeBasedNodeSegment> &edge_based_node_segments, |
| 733 | std::vector<EdgeWeight> &edge_based_node_weights, |
| 734 | std::vector<EdgeDuration> &edge_based_node_durations, |
| 735 | std::vector<EdgeDistance> &edge_based_node_distances, |
| 736 | util::DeallocatingVector<EdgeBasedEdge> &edge_based_edge_list, |
| 737 | std::uint32_t &connectivity_checksum) |
| 738 | { |
| 739 | EdgeBasedGraphFactory edge_based_graph_factory(node_based_graph, |
| 740 | edge_based_nodes_container, |
| 741 | compressed_edge_container, |
| 742 | coordinates, |
| 743 | string_table, |
| 744 | segregated_edges, |
| 745 | turn_lane_map); |
| 746 | |
| 747 | const auto create_edge_based_edges = [&]() |
| 748 | { |
| 749 | // scoped to release intermediate data structures right after the call |
| 750 | RestrictionMap unconditional_node_restriction_map(restriction_graph); |
| 751 | ConditionalRestrictionMap conditional_node_restriction_map(restriction_graph); |
| 752 | WayRestrictionMap via_way_restriction_map(restriction_graph); |
| 753 | edge_based_graph_factory.Run(scripting_environment, |
| 754 | config.GetPath(".osrm.turn_weight_penalties").string(), |
| 755 | config.GetPath(".osrm.turn_duration_penalties").string(), |
| 756 | config.GetPath(".osrm.turn_penalties_index").string(), |
| 757 | config.GetPath(".osrm.cnbg_to_ebg").string(), |
| 758 | config.GetPath(".osrm.restrictions").string(), |
| 759 | config.GetPath(".osrm.maneuver_overrides").string(), |
| 760 | unconditional_node_restriction_map, |
| 761 | conditional_node_restriction_map, |
| 762 | via_way_restriction_map, |
| 763 | maneuver_overrides); |
| 764 | return edge_based_graph_factory.GetNumberOfEdgeBasedNodes(); |
| 765 | }; |
| 766 | |
| 767 | const auto number_of_edge_based_nodes = create_edge_based_edges(); |
| 768 | |
| 769 | edge_based_graph_factory.GetEdgeBasedEdges(edge_based_edge_list); |
| 770 | edge_based_graph_factory.GetEdgeBasedNodeSegments(edge_based_node_segments); |
| 771 | edge_based_graph_factory.GetEdgeBasedNodeWeights(edge_based_node_weights); |
| 772 | edge_based_graph_factory.GetEdgeBasedNodeDurations(edge_based_node_durations); |
| 773 | edge_based_graph_factory.GetEdgeBasedNodeDistances(edge_based_node_distances); |
| 774 | connectivity_checksum = edge_based_graph_factory.GetConnectivityChecksum(); |
| 775 |
nothing calls this directly
no test coverage detected