diff --git a/include/extractor/guidance/classification_data.hpp b/include/extractor/guidance/classification_data.hpp index 754c4f2d4..53f54cf46 100644 --- a/include/extractor/guidance/classification_data.hpp +++ b/include/extractor/guidance/classification_data.hpp @@ -1,12 +1,9 @@ #ifndef OSRM_EXTRACTOR_CLASSIFICATION_DATA_HPP_ #define OSRM_EXTRACTOR_CLASSIFICATION_DATA_HPP_ -#include "util/simple_logger.hpp" - #include #include -#include // Forward Declaration to allow usage of external osmium::Way namespace osmium @@ -41,43 +38,7 @@ enum class FunctionalRoadClass : std::uint8_t LOW_PRIORITY_ROAD // a road simply included for connectivity. Should be avoided at all cost }; -inline FunctionalRoadClass functionalRoadClassFromTag(std::string const &value) -{ - // FIXME at some point this should be part of the profiles - const static auto class_hash = [] - { - std::unordered_map hash; - hash["motorway"] = FunctionalRoadClass::MOTORWAY; - hash["motorway_link"] = FunctionalRoadClass::MOTORWAY_LINK; - hash["trunk"] = FunctionalRoadClass::TRUNK; - hash["trunk_link"] = FunctionalRoadClass::TRUNK_LINK; - hash["primary"] = FunctionalRoadClass::PRIMARY; - hash["primary_link"] = FunctionalRoadClass::PRIMARY_LINK; - hash["secondary"] = FunctionalRoadClass::SECONDARY; - hash["secondary_link"] = FunctionalRoadClass::SECONDARY_LINK; - hash["tertiary"] = FunctionalRoadClass::TERTIARY; - hash["tertiary_link"] = FunctionalRoadClass::TERTIARY_LINK; - hash["unclassified"] = FunctionalRoadClass::UNCLASSIFIED; - hash["residential"] = FunctionalRoadClass::RESIDENTIAL; - hash["service"] = FunctionalRoadClass::SERVICE; - hash["living_street"] = FunctionalRoadClass::LIVING_STREET; - hash["track"] = FunctionalRoadClass::LOW_PRIORITY_ROAD; - hash["road"] = FunctionalRoadClass::LOW_PRIORITY_ROAD; - hash["path"] = FunctionalRoadClass::LOW_PRIORITY_ROAD; - hash["driveway"] = FunctionalRoadClass::LOW_PRIORITY_ROAD; - return hash; - }(); - - if (class_hash.find(value) != class_hash.end()) - { - return class_hash.find(value)->second; - } - else - { - util::SimpleLogger().Write(logDEBUG) << "Unknown road class encountered: " << value; - return FunctionalRoadClass::UNKNOWN; - } -} +FunctionalRoadClass functionalRoadClassFromTag(std::string const &tag); inline bool isRampClass(const FunctionalRoadClass road_class) { diff --git a/src/extractor/guidance/classification_data.cpp b/src/extractor/guidance/classification_data.cpp new file mode 100644 index 000000000..70ccaff1c --- /dev/null +++ b/src/extractor/guidance/classification_data.cpp @@ -0,0 +1,53 @@ +#include "extractor/guidance/classification_data.hpp" +#include "util/simple_logger.hpp" + +#include + +namespace osrm +{ +namespace extractor +{ +namespace guidance +{ + +FunctionalRoadClass functionalRoadClassFromTag(std::string const &value) +{ + // FIXME at some point this should be part of the profiles + const static auto class_hash = [] + { + std::unordered_map hash; + hash["motorway"] = FunctionalRoadClass::MOTORWAY; + hash["motorway_link"] = FunctionalRoadClass::MOTORWAY_LINK; + hash["trunk"] = FunctionalRoadClass::TRUNK; + hash["trunk_link"] = FunctionalRoadClass::TRUNK_LINK; + hash["primary"] = FunctionalRoadClass::PRIMARY; + hash["primary_link"] = FunctionalRoadClass::PRIMARY_LINK; + hash["secondary"] = FunctionalRoadClass::SECONDARY; + hash["secondary_link"] = FunctionalRoadClass::SECONDARY_LINK; + hash["tertiary"] = FunctionalRoadClass::TERTIARY; + hash["tertiary_link"] = FunctionalRoadClass::TERTIARY_LINK; + hash["unclassified"] = FunctionalRoadClass::UNCLASSIFIED; + hash["residential"] = FunctionalRoadClass::RESIDENTIAL; + hash["service"] = FunctionalRoadClass::SERVICE; + hash["living_street"] = FunctionalRoadClass::LIVING_STREET; + hash["track"] = FunctionalRoadClass::LOW_PRIORITY_ROAD; + hash["road"] = FunctionalRoadClass::LOW_PRIORITY_ROAD; + hash["path"] = FunctionalRoadClass::LOW_PRIORITY_ROAD; + hash["driveway"] = FunctionalRoadClass::LOW_PRIORITY_ROAD; + return hash; + }(); + + if (class_hash.find(value) != class_hash.end()) + { + return class_hash.find(value)->second; + } + else + { + util::SimpleLogger().Write(logDEBUG) << "Unknown road class encountered: " << value; + return FunctionalRoadClass::UNKNOWN; + } +} + +} // ns guidance +} // ns extractor +} // ns osrm