From c224d0eb08d4b72e0aadb307365c5b09670dc3ac Mon Sep 17 00:00:00 2001 From: Vladimir Byko-Ianko Date: Wed, 6 Mar 2019 09:36:44 +0300 Subject: [PATCH] Start openlr_stat refactoring. --- openlr/road_info_getter.cpp | 24 +++++++++++++++++++++++- openlr/road_info_getter.hpp | 6 ++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/openlr/road_info_getter.cpp b/openlr/road_info_getter.cpp index 8ca5c5c884..97c2d35c28 100644 --- a/openlr/road_info_getter.cpp +++ b/openlr/road_info_getter.cpp @@ -8,6 +8,23 @@ #include "std/iterator.hpp" +namespace +{ +openlr::FunctionalRoadClass HighwayClassToFunctionalRoadClass(ftypes::HighwayClass const & hwClass) +{ + switch (hwClass) + { + case ftypes::HighwayClass::Trunk: return openlr::FunctionalRoadClass::FRC0; + case ftypes::HighwayClass::Primary: return openlr::FunctionalRoadClass::FRC1; + case ftypes::HighwayClass::Secondary: return openlr::FunctionalRoadClass::FRC2; + case ftypes::HighwayClass::Tertiary: return openlr::FunctionalRoadClass::FRC3; + case ftypes::HighwayClass::LivingStreet: return openlr::FunctionalRoadClass::FRC4; + case ftypes::HighwayClass::Service: return openlr::FunctionalRoadClass::FRC5; + default: return openlr::FunctionalRoadClass::FRC7; + } +} +} + namespace openlr { RoadInfoGetter::RoadInfoGetter(DataSource const & dataSource) @@ -26,8 +43,13 @@ RoadInfoGetter::RoadInfo RoadInfoGetter::Get(FeatureID const & fid) CHECK(g.GetOriginalFeatureByIndex(fid.m_index, ft), ()); RoadInfo info; - info.m_frc = GetFunctionalRoadClass(feature::TypesHolder(ft)); +// info.m_frc = GetFunctionalRoadClass(feature::TypesHolder(ft)); info.m_fow = GetFormOfWay(feature::TypesHolder(ft)); + info.m_hwClass = ftypes::GetHighwayClass(feature::TypesHolder(ft)); + info.m_link = ftypes::IsLinkChecker::Instance()(ft); + info.m_oneWay = ftypes::IsOneWayChecker::Instance()(ft); + info.m_frc = HighwayClassToFunctionalRoadClass(info.m_hwClass); + it = m_cache.emplace(fid, info).first; return it->second; diff --git a/openlr/road_info_getter.hpp b/openlr/road_info_getter.hpp index 9a83343623..72b897d4d3 100644 --- a/openlr/road_info_getter.hpp +++ b/openlr/road_info_getter.hpp @@ -4,6 +4,7 @@ #include "openlr/road_type_checkers.hpp" #include "indexer/feature_data.hpp" +#include "indexer/ftypes_matcher.hpp" #include "std/map.hpp" @@ -22,10 +23,11 @@ class RoadInfoGetter final public: struct RoadInfo { - RoadInfo() = default; - FunctionalRoadClass m_frc = FunctionalRoadClass::NotAValue; FormOfWay m_fow = FormOfWay::NotAValue; + ftypes::HighwayClass m_hwClass = ftypes::HighwayClass::Undefined; + bool m_link = false; + bool m_oneWay = false; }; RoadInfoGetter(DataSource const & dataSource);