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:
authorДобрый Ээх <bukharaev@gmail.com>2016-11-24 12:27:18 +0300
committerДобрый Ээх <bukharaev@gmail.com>2016-11-24 20:11:22 +0300
commiteb1c85bce50a6d98fa92b1cec278643b26b59946 (patch)
tree824cdf2c3530a9aea58c2df51f5bbcb6eb5d527e /routing/geometry.cpp
parent1d992e43bd6791135fdf02c273f3584e646bb82b (diff)
Pull request #4672 review fixes
Diffstat (limited to 'routing/geometry.cpp')
-rw-r--r--routing/geometry.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/routing/geometry.cpp b/routing/geometry.cpp
index 38c3359b0b..218aa0eb03 100644
--- a/routing/geometry.cpp
+++ b/routing/geometry.cpp
@@ -1,4 +1,6 @@
-#include "geometry.hpp"
+#include "routing/geometry.hpp"
+
+#include "routing/routing_exception.hpp"
#include "geometry/mercator.hpp"
@@ -36,10 +38,7 @@ void GeometryLoaderImpl::Load(uint32_t featureId, RoadGeometry & road) const
FeatureType feature;
bool const isFound = m_guard.GetFeatureByIndex(featureId, feature);
if (!isFound)
- {
- LOG(LERROR, ("Feature", featureId, "not found"));
- return;
- }
+ MYTHROW(RoutingException, ("Feature", featureId, "not found"));
feature.ParseGeometry(FeatureType::BEST_GEOMETRY);
road.Load(*m_vehicleModel, feature);
@@ -48,6 +47,8 @@ void GeometryLoaderImpl::Load(uint32_t featureId, RoadGeometry & road) const
namespace routing
{
+// RoadGeometry ------------------------------------------------------------------------------------
+
RoadGeometry::RoadGeometry(bool oneWay, double speed, Points const & points)
: m_isRoad(true), m_isOneWay(oneWay), m_speed(speed), m_points(points)
{
@@ -64,11 +65,24 @@ void RoadGeometry::Load(IVehicleModel const & vehicleModel, FeatureType const &
m_points.emplace_back(feature.GetPoint(i));
}
+// Geometry ----------------------------------------------------------------------------------------
+
Geometry::Geometry(unique_ptr<GeometryLoader> loader) : m_loader(move(loader))
{
ASSERT(m_loader, ());
}
+RoadGeometry const & Geometry::GetRoad(uint32_t featureId) const
+{
+ auto const & it = m_roads.find(featureId);
+ if (it != m_roads.cend())
+ return it->second;
+
+ RoadGeometry & road = m_roads[featureId];
+ m_loader->Load(featureId, road);
+ return road;
+}
+
unique_ptr<GeometryLoader> CreateGeometryLoader(Index const & index, MwmSet::MwmId const & mwmId,
shared_ptr<IVehicleModel> vehicleModel)
{