diff options
author | tatiana-yan <tatiana.kondakova@gmail.com> | 2019-03-12 15:31:48 +0300 |
---|---|---|
committer | mpimenov <mpimenov@users.noreply.github.com> | 2019-03-18 22:38:39 +0300 |
commit | f1c58fbfcc0fd0bbd98285734e9a2d9e4435a33d (patch) | |
tree | 9c1d71beb7bcb46a3a94e4e9990ed19e5358aa02 /routing | |
parent | 2bf94c95dd55f70951a82b5c306b8a29a72a4180 (diff) |
[indexer] Disallow copy and move of FeatureType, remove FeatureType::ParseEverything().
Diffstat (limited to 'routing')
-rw-r--r-- | routing/bicycle_directions.cpp | 20 | ||||
-rw-r--r-- | routing/features_road_graph.cpp | 17 | ||||
-rw-r--r-- | routing/geometry.cpp | 19 | ||||
-rw-r--r-- | routing/index_road_graph.cpp | 8 |
4 files changed, 31 insertions, 33 deletions
diff --git a/routing/bicycle_directions.cpp b/routing/bicycle_directions.cpp index 82a107caaf..e1bb23a1bb 100644 --- a/routing/bicycle_directions.cpp +++ b/routing/bicycle_directions.cpp @@ -223,18 +223,18 @@ void BicycleDirectionsEngine::LoadPathAttributes(FeatureID const & featureId, Lo if (!featureId.IsValid()) return; - FeatureType ft; - if(!GetLoader(featureId.m_mwmId).GetFeatureByIndex(featureId.m_index, ft)) + auto ft = GetLoader(featureId.m_mwmId).GetFeatureByIndex(featureId.m_index); + if (!ft) return; - auto const highwayClass = ftypes::GetHighwayClass(feature::TypesHolder(ft)); + auto const highwayClass = ftypes::GetHighwayClass(feature::TypesHolder(*ft)); ASSERT_NOT_EQUAL(highwayClass, ftypes::HighwayClass::Error, ()); ASSERT_NOT_EQUAL(highwayClass, ftypes::HighwayClass::Undefined, ()); pathSegment.m_highwayClass = highwayClass; - pathSegment.m_isLink = ftypes::IsLinkChecker::Instance()(ft); - ft.GetName(StringUtf8Multilang::kDefaultCode, pathSegment.m_name); - pathSegment.m_onRoundabout = ftypes::IsRoundAboutChecker::Instance()(ft); + pathSegment.m_isLink = ftypes::IsLinkChecker::Instance()(*ft); + ft->GetName(StringUtf8Multilang::kDefaultCode, pathSegment.m_name); + pathSegment.m_onRoundabout = ftypes::IsRoundAboutChecker::Instance()(*ft); } void BicycleDirectionsEngine::GetSegmentRangeAndAdjacentEdges( @@ -255,15 +255,15 @@ void BicycleDirectionsEngine::GetSegmentRangeAndAdjacentEdges( continue; auto const & outFeatureId = edge.GetFeatureId(); - FeatureType ft; - if (!GetLoader(outFeatureId.m_mwmId).GetFeatureByIndex(outFeatureId.m_index, ft)) + auto ft = GetLoader(outFeatureId.m_mwmId).GetFeatureByIndex(outFeatureId.m_index); + if (!ft) continue; - auto const highwayClass = ftypes::GetHighwayClass(feature::TypesHolder(ft)); + auto const highwayClass = ftypes::GetHighwayClass(feature::TypesHolder(*ft)); ASSERT_NOT_EQUAL(highwayClass, ftypes::HighwayClass::Error, ()); ASSERT_NOT_EQUAL(highwayClass, ftypes::HighwayClass::Undefined, ()); - bool const isLink = ftypes::IsLinkChecker::Instance()(ft); + bool const isLink = ftypes::IsLinkChecker::Instance()(*ft); double angle = 0; diff --git a/routing/features_road_graph.cpp b/routing/features_road_graph.cpp index 0216b573b2..f07b9a880c 100644 --- a/routing/features_road_graph.cpp +++ b/routing/features_road_graph.cpp @@ -195,13 +195,13 @@ void FeaturesRoadGraph::FindClosestEdges(m2::PointD const & point, uint32_t coun void FeaturesRoadGraph::GetFeatureTypes(FeatureID const & featureId, feature::TypesHolder & types) const { - FeatureType ft; FeaturesLoaderGuard loader(m_dataSource, featureId.m_mwmId); - if (!loader.GetFeatureByIndex(featureId.m_index, ft)) + auto ft = loader.GetFeatureByIndex(featureId.m_index); + if (!ft) return; - ASSERT_EQUAL(ft.GetFeatureType(), feature::GEOM_LINE, ()); - types = feature::TypesHolder(ft); + ASSERT_EQUAL(ft->GetFeatureType(), feature::GEOM_LINE, ()); + types = feature::TypesHolder(*ft); } void FeaturesRoadGraph::GetJunctionTypes(Junction const & junction, feature::TypesHolder & types) const @@ -292,16 +292,15 @@ IRoadGraph::RoadInfo const & FeaturesRoadGraph::GetCachedRoadInfo(FeatureID cons if (found) return ri; - FeatureType ft; - FeaturesLoaderGuard loader(m_dataSource, featureId.m_mwmId); - if (!loader.GetFeatureByIndex(featureId.m_index, ft)) + auto ft = loader.GetFeatureByIndex(featureId.m_index); + if (!ft) return ri; - ASSERT_EQUAL(ft.GetFeatureType(), feature::GEOM_LINE, ()); + ASSERT_EQUAL(ft->GetFeatureType(), feature::GEOM_LINE, ()); - ExtractRoadInfo(featureId, ft, GetSpeedKMpHFromFt(ft, speedParams), ri); + ExtractRoadInfo(featureId, *ft, GetSpeedKMpHFromFt(*ft, speedParams), ri); return ri; } diff --git a/routing/geometry.cpp b/routing/geometry.cpp index e975e60977..0de2f1c0c5 100644 --- a/routing/geometry.cpp +++ b/routing/geometry.cpp @@ -65,18 +65,17 @@ GeometryLoaderImpl::GeometryLoaderImpl(DataSource const & dataSource, void GeometryLoaderImpl::Load(uint32_t featureId, RoadGeometry & road) { - FeatureType feature; - bool const isFound = m_guard.GetFeatureByIndex(featureId, feature); - if (!isFound) + auto feature = m_guard.GetFeatureByIndex(featureId); + if (!feature) MYTHROW(RoutingException, ("Feature", featureId, "not found in ", m_country)); - feature.ParseGeometry(FeatureType::BEST_GEOMETRY); + feature->ParseGeometry(FeatureType::BEST_GEOMETRY); feature::TAltitudes const * altitudes = nullptr; if (m_loadAltitudes) - altitudes = &(m_altitudeLoader.GetAltitudes(featureId, feature.GetPointsCount())); + altitudes = &(m_altitudeLoader.GetAltitudes(featureId, feature->GetPointsCount())); - road.Load(*m_vehicleModel, feature, altitudes, m_attrLoader.m_cityRoads->IsCityRoad(featureId), + road.Load(*m_vehicleModel, *feature, altitudes, m_attrLoader.m_cityRoads->IsCityRoad(featureId), m_attrLoader.m_maxspeeds->GetMaxspeed(featureId)); m_altitudeLoader.ClearCache(); } @@ -123,12 +122,12 @@ FileGeometryLoader::FileGeometryLoader(string const & fileName, void FileGeometryLoader::Load(uint32_t featureId, RoadGeometry & road) { - FeatureType feature; - m_featuresVector.GetVector().GetByIndex(featureId, feature); - feature.ParseGeometry(FeatureType::BEST_GEOMETRY); + auto feature = m_featuresVector.GetVector().GetByIndex(featureId); + CHECK(feature, ()); + feature->ParseGeometry(FeatureType::BEST_GEOMETRY); // Note. If FileGeometryLoader is used for generation cross mwm section for bicycle or // pedestrian routing |altitudes| should be used here. - road.Load(*m_vehicleModel, feature, nullptr /* altitudes */, m_cityRoads.IsCityRoad(featureId), + road.Load(*m_vehicleModel, *feature, nullptr /* altitudes */, m_cityRoads.IsCityRoad(featureId), m_maxspeeds.GetMaxspeed(featureId)); } } // namespace diff --git a/routing/index_road_graph.cpp b/routing/index_road_graph.cpp index dcda53793e..2d5b80f2b8 100644 --- a/routing/index_road_graph.cpp +++ b/routing/index_road_graph.cpp @@ -59,16 +59,16 @@ void IndexRoadGraph::GetEdgeTypes(Edge const & edge, feature::TypesHolder & type } FeatureID const featureId = edge.GetFeatureId(); - FeatureType ft; FeaturesLoaderGuard loader(m_dataSource, featureId.m_mwmId); - if (!loader.GetFeatureByIndex(featureId.m_index, ft)) + auto ft = loader.GetFeatureByIndex(featureId.m_index); + if (!ft) { LOG(LERROR, ("Can't load types for feature", featureId)); return; } - ASSERT_EQUAL(ft.GetFeatureType(), feature::GEOM_LINE, ()); - types = feature::TypesHolder(ft); + ASSERT_EQUAL(ft->GetFeatureType(), feature::GEOM_LINE, ()); + types = feature::TypesHolder(*ft); } void IndexRoadGraph::GetJunctionTypes(Junction const & junction, feature::TypesHolder & types) const |