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:
authorVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-06-07 13:22:44 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-06-17 19:36:51 +0300
commit4cac8206b33bf59fb44e039580fe312c31d7a5dd (patch)
tree1fbfd37b3a449c6f2c24af68c711ec65a949b36f /routing
parentf61de40e04d2a75d85c98a5b8743b3c0e0a6d308 (diff)
Review fixes.
Diffstat (limited to 'routing')
-rw-r--r--routing/bicycle_model.cpp24
-rw-r--r--routing/bicycle_model.hpp22
-rw-r--r--routing/pedestrian_model.cpp18
-rw-r--r--routing/pedestrian_model.hpp17
-rw-r--r--routing/vehicle_model.hpp16
5 files changed, 52 insertions, 45 deletions
diff --git a/routing/bicycle_model.cpp b/routing/bicycle_model.cpp
index 962939377c..c5e4798a81 100644
--- a/routing/bicycle_model.cpp
+++ b/routing/bicycle_model.cpp
@@ -617,28 +617,28 @@ void BicycleModel::Init()
SetAdditionalRoadTypes(classif(), arr, ARRAY_SIZE(arr));
}
-bool BicycleModel::IsNoBicycle(feature::TypesHolder const & types) const
+VehicleModel::Restriction BicycleModel::IsNoBicycle(feature::TypesHolder const & types) const
{
- return find(types.begin(), types.end(), m_noBicycleType) != types.end();
+ return types.Has(m_noBicycleType) ? Restriction::Yes : Restriction::Unknown;
}
-bool BicycleModel::IsYesBicycle(feature::TypesHolder const & types) const
+VehicleModel::Restriction BicycleModel::IsYesBicycle(feature::TypesHolder const & types) const
{
- return find(types.begin(), types.end(), m_yesBicycleType) != types.end();
+ return types.Has(m_yesBicycleType) ? Restriction::Yes : Restriction::Unknown;
}
-bool BicycleModel::IsBicycleBidir(feature::TypesHolder const & types) const
+VehicleModel::Restriction BicycleModel::IsBicycleBidir(feature::TypesHolder const & types) const
{
- return find(types.begin(), types.end(), m_bicycleBidirType) != types.end();
+ return types.Has(m_bicycleBidirType) ? Restriction::Yes : Restriction::Unknown;
}
double BicycleModel::GetSpeed(FeatureType const & f) const
{
- feature::TypesHolder types(f);
+ feature::TypesHolder const types(f);
- if (IsYesBicycle(types))
+ if (IsYesBicycle(types) == Restriction::Yes)
return VehicleModel::GetMaxSpeed();
- if (!IsNoBicycle(types) && HasRoadType(types))
+ if (IsNoBicycle(types) == Restriction::Unknown && HasRoadType(types))
return VehicleModel::GetMinTypeSpeed(types);
return 0.0;
@@ -648,7 +648,7 @@ bool BicycleModel::IsOneWay(FeatureType const & f) const
{
feature::TypesHolder const types(f);
- if (IsBicycleBidir(types))
+ if (IsBicycleBidir(types) == Restriction::Yes)
return false;
return VehicleModel::IsOneWay(f);
@@ -659,9 +659,9 @@ bool BicycleModel::IsRoad(FeatureType const & f) const
if (f.GetFeatureType() != feature::GEOM_LINE)
return false;
- feature::TypesHolder types(f);
+ feature::TypesHolder const types(f);
- if (IsNoBicycle(types))
+ if (IsNoBicycle(types) == Restriction::Yes)
return false;
return VehicleModel::HasRoadType(types);
}
diff --git a/routing/bicycle_model.hpp b/routing/bicycle_model.hpp
index 83875e6cbb..64e1ded4d0 100644
--- a/routing/bicycle_model.hpp
+++ b/routing/bicycle_model.hpp
@@ -14,25 +14,27 @@ public:
BicycleModel();
BicycleModel(VehicleModel::InitListT const & speedLimits);
- /// VehicleModel overrides.
+ /// VehicleModel overrides:
double GetSpeed(FeatureType const & f) const override;
bool IsOneWay(FeatureType const & f) const override;
+ /// @returns true if |f| could be considered as a road.
+ /// @note If BicycleModel::IsRoad(f) returns false for a feature f and for an instance
+ /// of |BicycleModel| created by default constructor
+ /// BicycleModel::IsRoad(f) for the same feature f and for any instance
+ /// of |BicycleModel| created by |BicycleModel(VehicleModel::InitListT const &)| must return false.
bool IsRoad(FeatureType const & f) const override;
private:
void Init();
- /// @return true if road is prohibited for bicycle,
- /// but if function returns false, real prohibition is unknown.
- bool IsNoBicycle(feature::TypesHolder const & types) const;
+ /// @return Restriction::Yes if road is prohibited for bicycle.
+ Restriction IsNoBicycle(feature::TypesHolder const & types) const;
- /// @return true if road is allowed for bicycle,
- /// but if function returns false, real allowance is unknown.
- bool IsYesBicycle(feature::TypesHolder const & types) const;
+ /// @return Restriction::Yes if road is allowed for bicycle.
+ Restriction IsYesBicycle(feature::TypesHolder const & types) const;
- /// @return true if it is allowed to ride bicycle in two directions,
- /// but if function returns false, real allowance is unknown.
- bool IsBicycleBidir(feature::TypesHolder const & types) const;
+ /// @return Restriction::Yes if it is allowed to ride bicycle in two directions.
+ Restriction IsBicycleBidir(feature::TypesHolder const & types) const;
uint32_t m_noBicycleType = 0;
uint32_t m_yesBicycleType = 0;
diff --git a/routing/pedestrian_model.cpp b/routing/pedestrian_model.cpp
index e2a305a147..7820f390a3 100644
--- a/routing/pedestrian_model.cpp
+++ b/routing/pedestrian_model.cpp
@@ -636,23 +636,23 @@ void PedestrianModel::Init()
SetAdditionalRoadTypes(classif(), arr, ARRAY_SIZE(arr));
}
-bool PedestrianModel::IsNoFoot(feature::TypesHolder const & types) const
+VehicleModel::Restriction PedestrianModel::IsNoFoot(feature::TypesHolder const & types) const
{
- return find(types.begin(), types.end(), m_noFootType) != types.end();
+ return types.Has(m_noFootType) ? Restriction::Yes : Restriction::Unknown;
}
-bool PedestrianModel::IsYesFoot(feature::TypesHolder const & types) const
+VehicleModel::Restriction PedestrianModel::IsYesFoot(feature::TypesHolder const & types) const
{
- return find(types.begin(), types.end(), m_yesFootType) != types.end();
+ return types.Has(m_yesFootType) ? Restriction::Yes : Restriction::Unknown;
}
double PedestrianModel::GetSpeed(FeatureType const & f) const
{
- feature::TypesHolder types(f);
+ feature::TypesHolder const types(f);
- if (IsYesFoot(types))
+ if (IsYesFoot(types) == Restriction::Yes)
return VehicleModel::GetMaxSpeed();
- if (!IsNoFoot(types) && HasRoadType(types))
+ if (IsNoFoot(types) == Restriction::Unknown && HasRoadType(types))
return VehicleModel::GetMinTypeSpeed(types);
return 0.0;
@@ -663,9 +663,9 @@ bool PedestrianModel::IsRoad(FeatureType const & f) const
if (f.GetFeatureType() != feature::GEOM_LINE)
return false;
- feature::TypesHolder types(f);
+ feature::TypesHolder const types(f);
- if (IsNoFoot(types))
+ if (IsNoFoot(types) == Restriction::Yes)
return false;
return VehicleModel::HasRoadType(types);
}
diff --git a/routing/pedestrian_model.hpp b/routing/pedestrian_model.hpp
index 3369ed46be..7b27868452 100644
--- a/routing/pedestrian_model.hpp
+++ b/routing/pedestrian_model.hpp
@@ -14,21 +14,24 @@ public:
PedestrianModel();
PedestrianModel(VehicleModel::InitListT const & speedLimits);
- /// VehicleModel overrides.
+ /// VehicleModel overrides:
double GetSpeed(FeatureType const & f) const override;
bool IsOneWay(FeatureType const &) const override { return false; }
+ /// @returns true if |f| could be considered as a road for pedestrian routing.
+ /// @note If PedestrianModel::IsRoad(f) returns false for a feature f and for an instance
+ /// of |PedestrianModel| created by default constructor
+ /// PedestrianModel::IsRoad(f) for the same feature f and for any instance
+ /// of |PedestrianModel| created by |PedestrianModel(VehicleModel::InitListT const &)| must return false.
bool IsRoad(FeatureType const & f) const override;
private:
void Init();
- /// @return True if road is prohibited for pedestrian,
- /// but if function returns False, real prohibition is unknown.
- bool IsNoFoot(feature::TypesHolder const & types) const;
+ /// @return Restriction::Yes if road is prohibited for pedestrian.
+ Restriction IsNoFoot(feature::TypesHolder const & types) const;
- /// @return True if road is allowed for pedestrian,
- /// but if function returns False, real allowance is unknown.
- bool IsYesFoot(feature::TypesHolder const & types) const;
+ /// @return Restriction::Yes if road is allowed for pedestrian.
+ Restriction IsYesFoot(feature::TypesHolder const & types) const;
uint32_t m_noFootType = 0;
uint32_t m_yesFootType = 0;
diff --git a/routing/vehicle_model.hpp b/routing/vehicle_model.hpp
index f01427838b..ad8d927e7f 100644
--- a/routing/vehicle_model.hpp
+++ b/routing/vehicle_model.hpp
@@ -60,29 +60,31 @@ public:
VehicleModel(Classificator const & c, InitListT const & speedLimits);
- /// IVehicleModel overrides.
+ /// IVehicleModel overrides:
double GetSpeed(FeatureType const & f) const override;
double GetMaxSpeed() const override { return m_maxSpeedKMpH; }
bool IsOneWay(FeatureType const & f) const override;
- /// @note If VehicleModel::IsRoad() returns true for a feature its implementation in
- /// inherited class may return true or false.
- /// If VehicleModel::IsRoad() returns false for a feature its implementation in
- /// inherited class must return false as well.
bool IsRoad(FeatureType const & f) const override;
/// @returns true if |m_types| or |m_addRoadTypes| contains |type| and false otherwise.
- /// @note The set of |types| IsRoadType method returns true for should contain any set of feature types
- /// IsRoad method (and its implementation in inherited classes) returns true for.
bool IsRoadType(uint32_t type) const;
template <class TList> bool HasRoadType(TList const & types) const
{
for (uint32_t t : types)
+ {
if (IsRoadType(t))
return true;
+ }
return false;
}
protected:
+ enum class Restriction
+ {
+ Unknown,
+ Yes,
+ };
+
/// Used in derived class constructors only. Not for public use.
void SetAdditionalRoadTypes(Classificator const & c,
initializer_list<char const *> const * arr, size_t sz);