Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortatiana-yan <tatiana.kondakova@gmail.com>2019-03-12 15:31:48 +0300
committermpimenov <mpimenov@users.noreply.github.com>2019-03-18 22:38:39 +0300
commitf1c58fbfcc0fd0bbd98285734e9a2d9e4435a33d (patch)
tree9c1d71beb7bcb46a3a94e4e9990ed19e5358aa02 /routing
parent2bf94c95dd55f70951a82b5c306b8a29a72a4180 (diff)
[indexer] Disallow copy and move of FeatureType, remove FeatureType::ParseEverything().
Diffstat (limited to 'routing')
-rw-r--r--routing/bicycle_directions.cpp20
-rw-r--r--routing/features_road_graph.cpp17
-rw-r--r--routing/geometry.cpp19
-rw-r--r--routing/index_road_graph.cpp8
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