#ifndef MANY_TO_MANY_ROUTING_HPP #define MANY_TO_MANY_ROUTING_HPP #include "engine/algorithm.hpp" #include "engine/datafacade.hpp" #include "engine/search_engine_data.hpp" #include "util/typedefs.hpp" #include namespace osrm { namespace engine { namespace routing_algorithms { namespace { struct NodeBucket { NodeID middle_node; unsigned column_index; // a column in the weight/duration matrix EdgeWeight weight; EdgeDuration duration; NodeBucket(NodeID middle_node, unsigned column_index, EdgeWeight weight, EdgeDuration duration) : middle_node(middle_node), column_index(column_index), weight(weight), duration(duration) { } // partial order comparison bool operator<(const NodeBucket &rhs) const { return middle_node < rhs.middle_node; } // functor for equal_range struct Compare { bool operator()(const NodeBucket &lhs, const NodeID &rhs) const { return lhs.middle_node < rhs; } bool operator()(const NodeID &lhs, const NodeBucket &rhs) const { return lhs < rhs.middle_node; } }; }; } template std::vector manyToManySearch(SearchEngineData &engine_working_data, const DataFacade &facade, const std::vector &phantom_nodes, const std::vector &source_indices, const std::vector &target_indices); } // namespace routing_algorithms } // namespace engine } // namespace osrm #endif