From 50442b529d273e524781133c4174fcc8ae964279 Mon Sep 17 00:00:00 2001 From: Maksim Andrianov Date: Tue, 1 Oct 2019 17:40:50 +0300 Subject: [PATCH] [generator] Fixed camera parsing. --- generator/collector_camera.cpp | 16 +++++++--------- generator/collector_camera.hpp | 8 +++++--- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/generator/collector_camera.cpp b/generator/collector_camera.cpp index ab7f542681..5ca3199cfb 100644 --- a/generator/collector_camera.cpp +++ b/generator/collector_camera.cpp @@ -35,13 +35,13 @@ namespace routing { size_t const CameraProcessor::kMaxSpeedSpeedStringLength = 32; -std::string ValidateMaxSpeedString(std::string const & maxSpeedString) +boost::optional GetMaxSpeed(std::string const & maxSpeedString) { routing::SpeedInUnits speed; if (!generator::ParseMaxspeedTag(maxSpeedString, speed) || !speed.IsNumeric()) - return std::string(); + return {}; - return strings::to_string(measurement_utils::ToSpeedKmPH(speed.GetSpeed(), speed.GetUnits())); + return measurement_utils::ToSpeedKmPH(speed.GetSpeed(), speed.GetUnits()); } CameraProcessor::CameraInfo::CameraInfo(OsmElement const & element) @@ -50,15 +50,13 @@ CameraProcessor::CameraInfo::CameraInfo(OsmElement const & element) , m_lat(element.m_lat) { auto const maxspeed = element.GetTag("maxspeed"); - if (maxspeed.empty()) + if (maxspeed.empty() || maxspeed.size() > kMaxSpeedSpeedStringLength) return; - auto const validatedMaxspeed = ValidateMaxSpeedString(maxspeed); - if (validatedMaxspeed.size() > kMaxSpeedSpeedStringLength || - !strings::to_int(validatedMaxspeed.c_str(), m_speed)) - { + if (auto const validatedMaxspeed = GetMaxSpeed(maxspeed)) + m_speed = static_cast(*validatedMaxspeed); + else LOG(LWARNING, ("Bad speed format of camera:", maxspeed, ", osmId:", element.m_id)); - } } CameraProcessor::CameraProcessor(std::string const & filename) diff --git a/generator/collector_camera.hpp b/generator/collector_camera.hpp index d0c987c176..e49f4c6f40 100644 --- a/generator/collector_camera.hpp +++ b/generator/collector_camera.hpp @@ -12,6 +12,8 @@ #include #include +#include + namespace generator_tests { class TestCameraCollector; @@ -34,14 +36,14 @@ class FeatureBuilder; // TODO (@gmoryes) move members of m_routingTagsProcessor to generator namespace routing { -/// \brief Gets text with speed, returns formatted speed string in km per hour. +/// \brief Returns formatted speed in km per hour. /// \param maxSpeedString - text with speed. Possible format: /// "130" - means 130 km per hour. /// "130 mph" - means 130 miles per hour. /// "130 kmh" - means 130 km per hour. /// See https://wiki.openstreetmap.org/wiki/Key:maxspeed /// for more details about input string. -std::string ValidateMaxSpeedString(std::string const & maxSpeedString); +boost::optional GetMaxSpeed(std::string const & maxSpeedString); class CameraProcessor { @@ -58,7 +60,7 @@ public: uint64_t m_id = 0; double m_lon = 0.0; double m_lat = 0.0; - int32_t m_speed = 0; + uint32_t m_speed = 0; std::vector m_ways; };