2017-01-09 15:40:33 -05:00
|
|
|
#ifndef OSRM_ENGINE_ALGORITHM_HPP
|
|
|
|
#define OSRM_ENGINE_ALGORITHM_HPP
|
|
|
|
|
2017-02-24 21:22:17 -05:00
|
|
|
#include <type_traits>
|
|
|
|
|
2017-01-09 15:40:33 -05:00
|
|
|
namespace osrm
|
|
|
|
{
|
|
|
|
namespace engine
|
|
|
|
{
|
|
|
|
namespace algorithm
|
|
|
|
{
|
|
|
|
|
|
|
|
// Contraction Hiearchy
|
2017-02-25 00:13:38 -05:00
|
|
|
struct CH final
|
|
|
|
{
|
|
|
|
};
|
2017-02-24 21:22:17 -05:00
|
|
|
// Contraction Hiearchy with core
|
2017-02-25 00:13:38 -05:00
|
|
|
struct CoreCH final
|
|
|
|
{
|
|
|
|
};
|
2017-03-01 15:29:04 -05:00
|
|
|
// Multi-Level Dijkstra
|
|
|
|
struct MLD final
|
|
|
|
{
|
|
|
|
};
|
2017-03-01 15:17:34 -05:00
|
|
|
|
2017-03-01 17:55:18 -05:00
|
|
|
template <typename AlgorithmT> const char *name();
|
|
|
|
template <> inline const char *name<CH>() { return "CH"; }
|
|
|
|
template <> inline const char *name<CoreCH>() { return "CoreCH"; }
|
|
|
|
template <> inline const char *name<MLD>() { return "MLD"; }
|
2017-01-09 15:40:33 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
namespace algorithm_trais
|
|
|
|
{
|
|
|
|
|
2017-02-25 00:13:38 -05:00
|
|
|
template <typename AlgorithmT> struct HasAlternativePathSearch final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <typename AlgorithmT> struct HasShortestPathSearch final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <typename AlgorithmT> struct HasDirectShortestPathSearch final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <typename AlgorithmT> struct HasMapMatching final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <typename AlgorithmT> struct HasManyToManySearch final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <typename AlgorithmT> struct HasGetTileTurns final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
2017-02-24 21:22:17 -05:00
|
|
|
|
2017-02-25 00:13:38 -05:00
|
|
|
template <> struct HasAlternativePathSearch<algorithm::CH> final : std::true_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasShortestPathSearch<algorithm::CH> final : std::true_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasDirectShortestPathSearch<algorithm::CH> final : std::true_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasMapMatching<algorithm::CH> final : std::true_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasManyToManySearch<algorithm::CH> final : std::true_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasGetTileTurns<algorithm::CH> final : std::true_type
|
|
|
|
{
|
|
|
|
};
|
2017-02-24 21:22:17 -05:00
|
|
|
|
2017-02-25 00:13:38 -05:00
|
|
|
// disbaled because of perfomance reasons
|
|
|
|
template <> struct HasAlternativePathSearch<algorithm::CoreCH> final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasManyToManySearch<algorithm::CoreCH> final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasShortestPathSearch<algorithm::CoreCH> final : std::true_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasDirectShortestPathSearch<algorithm::CoreCH> final : std::true_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasMapMatching<algorithm::CoreCH> final : std::true_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasGetTileTurns<algorithm::CoreCH> final : std::true_type
|
|
|
|
{
|
|
|
|
};
|
2017-03-01 15:29:04 -05:00
|
|
|
|
|
|
|
// disbaled because of perfomance reasons
|
|
|
|
template <> struct HasAlternativePathSearch<algorithm::MLD> final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasManyToManySearch<algorithm::MLD> final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasShortestPathSearch<algorithm::MLD> final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasDirectShortestPathSearch<algorithm::MLD> final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasMapMatching<algorithm::MLD> final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
|
|
|
template <> struct HasGetTileTurns<algorithm::MLD> final : std::false_type
|
|
|
|
{
|
|
|
|
};
|
2017-01-09 15:40:33 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|