mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-19 04:53:36 +00:00
[traffxml] Process fuzziness attribute in location
Signed-off-by: mvglasow <michael -at- vonglasow.com>
This commit is contained in:
@@ -370,6 +370,19 @@ std::string DebugPrint(Directionality directionality)
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
std::string DebugPrint(Fuzziness fuzziness)
|
||||
{
|
||||
switch (fuzziness)
|
||||
{
|
||||
case Fuzziness::LowRes: return "LowRes";
|
||||
case Fuzziness::MediumRes: return "MediumRes";
|
||||
case Fuzziness::EndUnknown: return "EndUnknown";
|
||||
case Fuzziness::StartUnknown: return "StartUnknown";
|
||||
case Fuzziness::ExtentUnknown: return "ExtentUnknown";
|
||||
}
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
std::string DebugPrint(Ramps ramps)
|
||||
{
|
||||
switch (ramps)
|
||||
@@ -526,7 +539,7 @@ std::string DebugPrint(TraffLocation location)
|
||||
os << "via: " << (location.m_via ? DebugPrint(location.m_via.value()) : "nullopt") << ", ";
|
||||
os << "to: " << (location.m_to ? DebugPrint(location.m_to.value()) : "nullopt") << ", ";
|
||||
os << "notVia: " << (location.m_notVia ? DebugPrint(location.m_notVia.value()) : "nullopt") << ", ";
|
||||
// TODO fuzziness (not yet implemented in struct)
|
||||
os << "fuzziness: " << (location.m_fuzziness ? DebugPrint(location.m_fuzziness.value()) : "nullopt") << ", ";
|
||||
os << "country: " << location.m_country.value_or("nullopt") << ", ";
|
||||
os << "territory: " << location.m_territory.value_or("nullopt") << ", ";
|
||||
os << "town: " << location.m_town.value_or("nullopt") << ", ";
|
||||
|
||||
@@ -100,7 +100,14 @@ enum class Directionality
|
||||
BothDirections
|
||||
};
|
||||
|
||||
// TODO enum fuzziness
|
||||
enum class Fuzziness
|
||||
{
|
||||
LowRes,
|
||||
MediumRes,
|
||||
EndUnknown,
|
||||
StartUnknown,
|
||||
ExtentUnknown
|
||||
};
|
||||
|
||||
enum class Ramps
|
||||
{
|
||||
@@ -383,7 +390,7 @@ struct TraffLocation
|
||||
std::optional<std::string> m_destination;
|
||||
std::optional<std::string> m_direction;
|
||||
Directionality m_directionality = Directionality::BothDirections;
|
||||
// TODO std::optional<Fuzziness> m_fuzziness;
|
||||
std::optional<Fuzziness> m_fuzziness;
|
||||
std::optional<std::string> m_origin;
|
||||
Ramps m_ramps = Ramps::None;
|
||||
std::optional<RoadClass> m_roadClass;
|
||||
|
||||
@@ -36,6 +36,14 @@ const boost::bimap<std::string, Directionality> kDirectionalityMap = MakeBimap<s
|
||||
{"BOTH_DIRECTIONS", Directionality::BothDirections}
|
||||
});
|
||||
|
||||
const boost::bimap<std::string, Fuzziness> kFuzzinessMap = MakeBimap<std::string, Fuzziness>({
|
||||
{"LOW_RES", Fuzziness::LowRes},
|
||||
{"MEDIUM_RES", Fuzziness::MediumRes},
|
||||
{"END_UNKNOWN", Fuzziness::EndUnknown},
|
||||
{"START_UNKNOWN", Fuzziness::StartUnknown},
|
||||
{"EXTENT_UNKNOWN", Fuzziness::ExtentUnknown}
|
||||
});
|
||||
|
||||
const boost::bimap<std::string, Ramps> kRampsMap = MakeBimap<std::string, Ramps>({
|
||||
{"ALL_RAMPS", Ramps::All},
|
||||
{"ENTRY_RAMP", Ramps::Entry},
|
||||
@@ -597,9 +605,7 @@ bool LocationFromXml(pugi::xml_node const & node, TraffLocation & location)
|
||||
location.m_direction = OptionalStringFromXml(node.attribute("direction"));
|
||||
|
||||
EnumFromXml(node.attribute("directionality"), location.m_directionality, kDirectionalityMap);
|
||||
|
||||
// TODO fuzziness (not yet implemented in struct)
|
||||
|
||||
location.m_fuzziness = OptionalEnumFromXml(node.attribute("fuzziness"), kFuzzinessMap);
|
||||
location.m_origin = OptionalStringFromXml(node.attribute("origin"));
|
||||
EnumFromXml(node.attribute("ramps"), location.m_ramps, kRampsMap);
|
||||
location.m_roadClass = OptionalEnumFromXml(node.attribute("road_class"), kRoadClassMap);
|
||||
@@ -628,9 +634,8 @@ void LocationToXml(TraffLocation const & location, pugi::xml_node & node)
|
||||
if (location.m_direction)
|
||||
node.append_attribute("direction").set_value(location.m_direction.value());
|
||||
EnumToXml(location.m_directionality, "directionality", node, kDirectionalityMap);
|
||||
|
||||
// TODO fuzziness (not yet implemented in struct)
|
||||
|
||||
if (location.m_fuzziness)
|
||||
EnumToXml(location.m_fuzziness.value(), "fuzziness", node, kFuzzinessMap);
|
||||
if (location.m_origin)
|
||||
node.append_attribute("origin").set_value(location.m_origin.value());
|
||||
EnumToXml(location.m_ramps, "ramps", node, kRampsMap);
|
||||
|
||||
Reference in New Issue
Block a user