#ifndef OSRM_ENGINE_ALGORITHM_HPP #define OSRM_ENGINE_ALGORITHM_HPP #include namespace osrm { namespace engine { namespace routing_algorithms { // Contraction Hiearchy namespace ch { struct Algorithm final { }; } // Multi-Level Dijkstra namespace mld { struct Algorithm final { }; } // Algorithm names template const char *name(); template <> inline const char *name() { return "CH"; } template <> inline const char *name() { return "MLD"; } // Algorithm identifier template const char *identifier(); template <> inline const char *identifier() { return "ch"; } template <> inline const char *identifier() { return "mld"; } template struct HasAlternativePathSearch final : std::false_type { }; template struct HasShortestPathSearch final : std::false_type { }; template struct HasDirectShortestPathSearch final : std::false_type { }; template struct HasMapMatching final : std::false_type { }; template struct HasManyToManySearch final : std::false_type { }; template struct SupportsDistanceAnnotationType final : std::false_type { }; template struct HasGetTileTurns final : std::false_type { }; template struct HasExcludeFlags final : std::false_type { }; // Algorithms supported by Contraction Hierarchies template <> struct HasAlternativePathSearch final : std::true_type { }; template <> struct HasShortestPathSearch final : std::true_type { }; template <> struct HasDirectShortestPathSearch final : std::true_type { }; template <> struct HasMapMatching final : std::true_type { }; template <> struct HasManyToManySearch final : std::true_type { }; template <> struct SupportsDistanceAnnotationType final : std::true_type { }; template <> struct HasGetTileTurns final : std::true_type { }; template <> struct HasExcludeFlags final : std::true_type { }; // Algorithms supported by Multi-Level Dijkstra template <> struct HasAlternativePathSearch final : std::true_type { }; template <> struct HasDirectShortestPathSearch final : std::true_type { }; template <> struct HasShortestPathSearch final : std::true_type { }; template <> struct HasMapMatching final : std::true_type { }; template <> struct HasManyToManySearch final : std::true_type { }; template <> struct SupportsDistanceAnnotationType final : std::false_type { }; template <> struct HasGetTileTurns final : std::true_type { }; template <> struct HasExcludeFlags final : std::true_type { }; } } } #endif