mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-19 21:13:35 +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();
|
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)
|
std::string DebugPrint(Ramps ramps)
|
||||||
{
|
{
|
||||||
switch (ramps)
|
switch (ramps)
|
||||||
@@ -526,7 +539,7 @@ std::string DebugPrint(TraffLocation location)
|
|||||||
os << "via: " << (location.m_via ? DebugPrint(location.m_via.value()) : "nullopt") << ", ";
|
os << "via: " << (location.m_via ? DebugPrint(location.m_via.value()) : "nullopt") << ", ";
|
||||||
os << "to: " << (location.m_to ? DebugPrint(location.m_to.value()) : "nullopt") << ", ";
|
os << "to: " << (location.m_to ? DebugPrint(location.m_to.value()) : "nullopt") << ", ";
|
||||||
os << "notVia: " << (location.m_notVia ? DebugPrint(location.m_notVia.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 << "country: " << location.m_country.value_or("nullopt") << ", ";
|
||||||
os << "territory: " << location.m_territory.value_or("nullopt") << ", ";
|
os << "territory: " << location.m_territory.value_or("nullopt") << ", ";
|
||||||
os << "town: " << location.m_town.value_or("nullopt") << ", ";
|
os << "town: " << location.m_town.value_or("nullopt") << ", ";
|
||||||
|
|||||||
@@ -100,7 +100,14 @@ enum class Directionality
|
|||||||
BothDirections
|
BothDirections
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO enum fuzziness
|
enum class Fuzziness
|
||||||
|
{
|
||||||
|
LowRes,
|
||||||
|
MediumRes,
|
||||||
|
EndUnknown,
|
||||||
|
StartUnknown,
|
||||||
|
ExtentUnknown
|
||||||
|
};
|
||||||
|
|
||||||
enum class Ramps
|
enum class Ramps
|
||||||
{
|
{
|
||||||
@@ -383,7 +390,7 @@ struct TraffLocation
|
|||||||
std::optional<std::string> m_destination;
|
std::optional<std::string> m_destination;
|
||||||
std::optional<std::string> m_direction;
|
std::optional<std::string> m_direction;
|
||||||
Directionality m_directionality = Directionality::BothDirections;
|
Directionality m_directionality = Directionality::BothDirections;
|
||||||
// TODO std::optional<Fuzziness> m_fuzziness;
|
std::optional<Fuzziness> m_fuzziness;
|
||||||
std::optional<std::string> m_origin;
|
std::optional<std::string> m_origin;
|
||||||
Ramps m_ramps = Ramps::None;
|
Ramps m_ramps = Ramps::None;
|
||||||
std::optional<RoadClass> m_roadClass;
|
std::optional<RoadClass> m_roadClass;
|
||||||
|
|||||||
@@ -36,6 +36,14 @@ const boost::bimap<std::string, Directionality> kDirectionalityMap = MakeBimap<s
|
|||||||
{"BOTH_DIRECTIONS", Directionality::BothDirections}
|
{"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>({
|
const boost::bimap<std::string, Ramps> kRampsMap = MakeBimap<std::string, Ramps>({
|
||||||
{"ALL_RAMPS", Ramps::All},
|
{"ALL_RAMPS", Ramps::All},
|
||||||
{"ENTRY_RAMP", Ramps::Entry},
|
{"ENTRY_RAMP", Ramps::Entry},
|
||||||
@@ -597,9 +605,7 @@ bool LocationFromXml(pugi::xml_node const & node, TraffLocation & location)
|
|||||||
location.m_direction = OptionalStringFromXml(node.attribute("direction"));
|
location.m_direction = OptionalStringFromXml(node.attribute("direction"));
|
||||||
|
|
||||||
EnumFromXml(node.attribute("directionality"), location.m_directionality, kDirectionalityMap);
|
EnumFromXml(node.attribute("directionality"), location.m_directionality, kDirectionalityMap);
|
||||||
|
location.m_fuzziness = OptionalEnumFromXml(node.attribute("fuzziness"), kFuzzinessMap);
|
||||||
// TODO fuzziness (not yet implemented in struct)
|
|
||||||
|
|
||||||
location.m_origin = OptionalStringFromXml(node.attribute("origin"));
|
location.m_origin = OptionalStringFromXml(node.attribute("origin"));
|
||||||
EnumFromXml(node.attribute("ramps"), location.m_ramps, kRampsMap);
|
EnumFromXml(node.attribute("ramps"), location.m_ramps, kRampsMap);
|
||||||
location.m_roadClass = OptionalEnumFromXml(node.attribute("road_class"), kRoadClassMap);
|
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)
|
if (location.m_direction)
|
||||||
node.append_attribute("direction").set_value(location.m_direction.value());
|
node.append_attribute("direction").set_value(location.m_direction.value());
|
||||||
EnumToXml(location.m_directionality, "directionality", node, kDirectionalityMap);
|
EnumToXml(location.m_directionality, "directionality", node, kDirectionalityMap);
|
||||||
|
if (location.m_fuzziness)
|
||||||
// TODO fuzziness (not yet implemented in struct)
|
EnumToXml(location.m_fuzziness.value(), "fuzziness", node, kFuzzinessMap);
|
||||||
|
|
||||||
if (location.m_origin)
|
if (location.m_origin)
|
||||||
node.append_attribute("origin").set_value(location.m_origin.value());
|
node.append_attribute("origin").set_value(location.m_origin.value());
|
||||||
EnumToXml(location.m_ramps, "ramps", node, kRampsMap);
|
EnumToXml(location.m_ramps, "ramps", node, kRampsMap);
|
||||||
|
|||||||
Reference in New Issue
Block a user