const Route* e_route = static_cast<Route*>(xbt_graph_edge_get_data(edge));
- for (auto const& link : e_route->link_list_) {
- route->link_list_.insert(route->link_list_.begin(), link);
- if (lat)
- *lat += link->get_latency();
- }
+ insert_link_latency(route->link_list_, e_route->link_list_, lat);
}
auto elm = route_cache_.emplace(src_id, std::vector<int>());
const NetPoint* gw_dst_net_elm = nullptr;
const NetPoint* prev_gw_src_net_elm = nullptr;
get_global_route(gw_dst_net_elm, prev_gw_src_net_elm, e_route_as_to_as, nullptr);
- auto pos = route->link_list_.begin();
- for (auto const& link : e_route_as_to_as) {
- route->link_list_.insert(pos, link);
- if (lat)
- *lat += link->get_latency();
- pos++;
- }
+ std::reverse(begin(e_route_as_to_as), end(e_route_as_to_as));
+ insert_link_latency(route->link_list_, e_route_as_to_as, lat);
}
- for (auto const& link : e_route->link_list_) {
- route->link_list_.insert(route->link_list_.begin(), link);
- if (lat)
- *lat += link->get_latency();
- }
+ insert_link_latency(route->link_list_, e_route->link_list_, lat);
}
if (get_hierarchy() == RoutingMode::recursive) {