use ADL and explicit instantiation for map matching

This commit is contained in:
Michael Krasnyk 2017-03-31 15:32:04 +02:00 committed by Patrick Niklaus
parent cf17a3a4c3
commit 7726576bb7
2 changed files with 23 additions and 44 deletions

View File

@ -30,8 +30,9 @@ SubMatchingList mapMatching(SearchEngineData<Algorithm> &engine_working_data,
const std::vector<unsigned> &trace_timestamps, const std::vector<unsigned> &trace_timestamps,
const std::vector<boost::optional<double>> &trace_gps_precision, const std::vector<boost::optional<double>> &trace_gps_precision,
const bool allow_splitting); const bool allow_splitting);
}
} } // namespace routing_algorithms
} } // namespace engine
} // namespace osrm
#endif /* MAP_MATCHING_HPP */ #endif /* MAP_MATCHING_HPP */

View File

@ -48,14 +48,13 @@ unsigned getMedianSampleTime(const std::vector<unsigned> &timestamps)
} }
template <typename Algorithm> template <typename Algorithm>
SubMatchingList SubMatchingList mapMatching(SearchEngineData<Algorithm> &engine_working_data,
mapMatchingImpl(SearchEngineData<Algorithm> &engine_working_data, const datafacade::ContiguousInternalMemoryDataFacade<Algorithm> &facade,
const datafacade::ContiguousInternalMemoryDataFacade<Algorithm> &facade, const CandidateLists &candidates_list,
const CandidateLists &candidates_list, const std::vector<util::Coordinate> &trace_coordinates,
const std::vector<util::Coordinate> &trace_coordinates, const std::vector<unsigned> &trace_timestamps,
const std::vector<unsigned> &trace_timestamps, const std::vector<boost::optional<double>> &trace_gps_precision,
const std::vector<boost::optional<double>> &trace_gps_precision, const bool allow_splitting)
const bool allow_splitting)
{ {
map_matching::MatchingConfidence confidence; map_matching::MatchingConfidence confidence;
map_matching::EmissionLogProbability default_emission_log_probability(DEFAULT_GPS_PRECISION); map_matching::EmissionLogProbability default_emission_log_probability(DEFAULT_GPS_PRECISION);
@ -220,14 +219,14 @@ mapMatchingImpl(SearchEngineData<Algorithm> &engine_working_data,
} }
double network_distance = double network_distance =
ch::getNetworkDistance(facade, getNetworkDistance(facade,
forward_heap, forward_heap,
reverse_heap, reverse_heap,
forward_core_heap, forward_core_heap,
reverse_core_heap, reverse_core_heap,
prev_unbroken_timestamps_list[s].phantom_node, prev_unbroken_timestamps_list[s].phantom_node,
current_timestamps_list[s_prime].phantom_node, current_timestamps_list[s_prime].phantom_node,
duration_upper_bound); duration_upper_bound);
// get distance diff between loc1/2 and locs/s_prime // get distance diff between loc1/2 and locs/s_prime
const auto d_t = std::abs(network_distance - haversine_distance); const auto d_t = std::abs(network_distance - haversine_distance);
@ -420,44 +419,23 @@ mapMatchingImpl(SearchEngineData<Algorithm> &engine_working_data,
return sub_matchings; return sub_matchings;
} }
template <> template SubMatchingList
SubMatchingList
mapMatching(SearchEngineData<ch::Algorithm> &engine_working_data, mapMatching(SearchEngineData<ch::Algorithm> &engine_working_data,
const datafacade::ContiguousInternalMemoryDataFacade<ch::Algorithm> &facade, const datafacade::ContiguousInternalMemoryDataFacade<ch::Algorithm> &facade,
const CandidateLists &candidates_list, const CandidateLists &candidates_list,
const std::vector<util::Coordinate> &trace_coordinates, const std::vector<util::Coordinate> &trace_coordinates,
const std::vector<unsigned> &trace_timestamps, const std::vector<unsigned> &trace_timestamps,
const std::vector<boost::optional<double>> &trace_gps_precision, const std::vector<boost::optional<double>> &trace_gps_precision,
const bool use_tidying) const bool allow_splitting);
{
return mapMatchingImpl(engine_working_data,
facade,
candidates_list,
trace_coordinates,
trace_timestamps,
trace_gps_precision,
use_tidying);
}
template <> template SubMatchingList
SubMatchingList
mapMatching(SearchEngineData<corech::Algorithm> &engine_working_data, mapMatching(SearchEngineData<corech::Algorithm> &engine_working_data,
const datafacade::ContiguousInternalMemoryDataFacade<corech::Algorithm> &facade, const datafacade::ContiguousInternalMemoryDataFacade<corech::Algorithm> &facade,
const CandidateLists &candidates_list, const CandidateLists &candidates_list,
const std::vector<util::Coordinate> &trace_coordinates, const std::vector<util::Coordinate> &trace_coordinates,
const std::vector<unsigned> &trace_timestamps, const std::vector<unsigned> &trace_timestamps,
const std::vector<boost::optional<double>> &trace_gps_precision, const std::vector<boost::optional<double>> &trace_gps_precision,
const bool use_tidying) const bool allow_splitting);
{
return mapMatchingImpl(engine_working_data,
facade,
candidates_list,
trace_coordinates,
trace_timestamps,
trace_gps_precision,
use_tidying);
}
} // namespace routing_algorithms } // namespace routing_algorithms
} // namespace engine } // namespace engine