void PreResult2::RegionInfo::GetRegion(storage::CountryInfoGetter const & infoGetter, storage::CountryInfo & info) const { if (!m_file.empty()) infoGetter.GetRegionInfo(m_file, info); else infoGetter.GetRegionInfo(m_point, info); }
shared_ptr<IRouter> CreatePedestrianRouter(Index & index, storage::CountryInfoGetter const & infoGetter) { auto countryFileGetter = [&infoGetter](m2::PointD const & pt) { return infoGetter.GetRegionFile(pt); }; unique_ptr<IRouter> router = CreatePedestrianAStarBidirectionalRouter(index, countryFileGetter); return shared_ptr<IRouter>(move(router)); }
shared_ptr<OsrmRouter> CreateOsrmRouter(Index & index, storage::CountryInfoGetter const & infoGetter) { shared_ptr<OsrmRouter> osrmRouter(new OsrmRouter( &index, [&infoGetter](m2::PointD const & pt) { return infoGetter.GetRegionFile(pt); } )); return osrmRouter; }
unique_ptr<CarRouter> CreateCarRouter(Index & index, storage::CountryInfoGetter const & infoGetter, traffic::TrafficCache const & trafficCache) { auto const countryFileGetter = [&infoGetter](m2::PointD const & pt) { return infoGetter.GetRegionCountryId(pt); }; auto carRouter = make_unique<CarRouter>(index, countryFileGetter, SingleMwmRouter::CreateCarRouter(index, trafficCache)); return carRouter; }
unique_ptr<IRouter> CreateAStarRouter(Index & index, storage::CountryInfoGetter const & infoGetter, TRouterFactory const & routerFactory) { // |infoGetter| should be a reference to an object which exists while the // result of the function is used. auto countryFileGetter = [&infoGetter](m2::PointD const & pt) { return infoGetter.GetRegionCountryId(pt); }; unique_ptr<IRouter> router = routerFactory(index, countryFileGetter); return unique_ptr<IRouter>(move(router)); }
// RankerResult::RegionInfo ------------------------------------------------------------------------ bool RankerResult::RegionInfo::GetCountryId(storage::CountryInfoGetter const & infoGetter, storage::CountryId & countryId) const { if (!m_countryId.empty()) { countryId = m_countryId; return true; } auto const id = infoGetter.GetRegionCountryId(m_point); if (id != storage::kInvalidCountryId) { countryId = id; return true; } return false; }