mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-23 22:53:43 +00:00
[routing] OSM tag based time and turn penalties
Signed-off-by: Henry Sternberg <dev@bluelightmaps.com> Co-Authored-By: eisa01 <eisa01@gmail.com> Co-Authored-By: x7z4w <x7z4w@noreply.codeberg.org> Co-Authored-By: Yannik Bloscheck <git@yannikbloscheck.com>
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
|
||||
#include <algorithm>
|
||||
#include <sstream>
|
||||
#include <unordered_map>
|
||||
|
||||
namespace routing
|
||||
{
|
||||
@@ -378,4 +379,41 @@ string DebugPrint(HighwayType type)
|
||||
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
void FromString(std::string_view s, HighwayType & highwayType)
|
||||
{
|
||||
// Build reverse lookup from DebugPrint function
|
||||
static std::unordered_map<std::string, HighwayType> const stringToEnum = []()
|
||||
{
|
||||
std::unordered_map<std::string, HighwayType> map;
|
||||
|
||||
// All possible HighwayType values
|
||||
constexpr HighwayType allTypes[] = {
|
||||
HighwayType::HighwayResidential, HighwayType::HighwayService, HighwayType::HighwayUnclassified,
|
||||
HighwayType::HighwayFootway, HighwayType::HighwayTrack, HighwayType::HighwayTertiary,
|
||||
HighwayType::HighwaySecondary, HighwayType::HighwayPath, HighwayType::HighwayPrimary,
|
||||
HighwayType::HighwayRoad, HighwayType::HighwayCycleway, HighwayType::HighwayMotorwayLink,
|
||||
HighwayType::HighwayLivingStreet, HighwayType::HighwayMotorway, HighwayType::HighwaySteps,
|
||||
HighwayType::HighwayTrunk, HighwayType::HighwayPedestrian, HighwayType::HighwayTrunkLink,
|
||||
HighwayType::HighwayPrimaryLink, HighwayType::ManMadePier, HighwayType::HighwayBridleway,
|
||||
HighwayType::HighwaySecondaryLink, HighwayType::RouteFerry, HighwayType::HighwayTertiaryLink,
|
||||
HighwayType::HighwayBusway, HighwayType::RouteShuttleTrain};
|
||||
|
||||
for (auto type : allTypes)
|
||||
map[DebugPrint(type)] = type;
|
||||
|
||||
return map;
|
||||
}();
|
||||
|
||||
auto it = stringToEnum.find(std::string(s));
|
||||
if (it != stringToEnum.end())
|
||||
{
|
||||
highwayType = it->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
ASSERT(false, ("Could not read HighwayType from string", s));
|
||||
highwayType = HighwayType::HighwayResidential; // default fallback
|
||||
}
|
||||
}
|
||||
} // namespace routing
|
||||
|
||||
Reference in New Issue
Block a user