use std::collections::HashMap;
use crate::{api::RoadPosition, common::MaliputError};
use strum_macros::{Display, IntoStaticStr};
pub struct TrafficLightBook<'a> {
pub(super) traffic_light_book: &'a maliput_sys::api::rules::ffi::TrafficLightBook,
}
impl<'a> TrafficLightBook<'a> {
pub fn traffic_lights(&self) -> Vec<TrafficLight<'_>> {
let traffic_lights_cpp = maliput_sys::api::rules::ffi::TrafficLightBook_TrafficLights(self.traffic_light_book);
traffic_lights_cpp
.into_iter()
.map(|tl| TrafficLight {
traffic_light: unsafe { tl.traffic_light.as_ref().expect("") },
})
.collect::<Vec<TrafficLight>>()
}
pub fn get_traffic_light(&self, id: &String) -> Option<TrafficLight<'_>> {
let traffic_light = maliput_sys::api::rules::ffi::TrafficLightBook_GetTrafficLight(self.traffic_light_book, id);
if traffic_light.is_null() {
return None;
}
Some(TrafficLight {
traffic_light: unsafe {
traffic_light
.as_ref()
.expect("Unable to get underlying traffic light pointer")
},
})
}
pub fn find_by_lane(&self, lane_id: &String) -> Vec<TrafficLight<'_>> {
let traffic_lights_cpp =
maliput_sys::api::rules::ffi::TrafficLightBook_FindByLane(self.traffic_light_book, lane_id);
traffic_lights_cpp
.into_iter()
.map(|tl| TrafficLight {
traffic_light: unsafe { tl.traffic_light.as_ref().expect("TrafficLight pointer is null") },
})
.collect::<Vec<TrafficLight>>()
}
}
pub struct TrafficLight<'a> {
pub traffic_light: &'a maliput_sys::api::rules::ffi::TrafficLight,
}
impl<'a> TrafficLight<'a> {
pub fn id(&self) -> String {
maliput_sys::api::rules::ffi::TrafficLight_id(self.traffic_light)
}
pub fn position_road_network(&self) -> super::InertialPosition {
let inertial_position = maliput_sys::api::rules::ffi::TrafficLight_position_road_network(self.traffic_light);
super::InertialPosition { ip: inertial_position }
}
pub fn orientation_road_network(&self) -> super::Rotation {
let rotation = maliput_sys::api::rules::ffi::TrafficLight_orientation_road_network(self.traffic_light);
super::Rotation { r: rotation }
}
pub fn bulb_groups(&self) -> Vec<BulbGroup<'_>> {
let bulb_groups_cpp = maliput_sys::api::rules::ffi::TrafficLight_bulb_groups(self.traffic_light);
bulb_groups_cpp
.into_iter()
.map(|bg| BulbGroup {
bulb_group: unsafe { bg.bulb_group.as_ref().expect("") },
})
.collect::<Vec<BulbGroup>>()
}
pub fn get_bulb_group(&self, id: &String) -> Option<BulbGroup<'_>> {
let bulb_group = maliput_sys::api::rules::ffi::TrafficLight_GetBulbGroup(self.traffic_light, id);
if bulb_group.is_null() {
return None;
}
Some(BulbGroup {
bulb_group: unsafe {
bulb_group
.as_ref()
.expect("Unable to get underlying bulb group pointer")
},
})
}
pub fn related_lanes(&self) -> Vec<String> {
maliput_sys::api::rules::ffi::TrafficLight_related_lanes(self.traffic_light)
}
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum BulbColor {
Red,
Yellow,
Green,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum BulbType {
Round,
Arrow,
ArrowLeft,
ArrowRight,
ArrowUp,
ArrowUpperLeft,
ArrowUpperRight,
UTurnLeft,
UTurnRight,
Walk,
DontWalk,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum BulbState {
Off,
On,
Blinking,
}
pub struct Bulb<'a> {
pub bulb: &'a maliput_sys::api::rules::ffi::Bulb,
}
impl Bulb<'_> {
pub fn unique_id(&self) -> UniqueBulbId {
UniqueBulbId {
unique_bulb_id: maliput_sys::api::rules::ffi::Bulb_unique_id(self.bulb),
}
}
pub fn id(&self) -> String {
maliput_sys::api::rules::ffi::Bulb_id(self.bulb)
}
pub fn color(&self) -> BulbColor {
let color = self.bulb.color();
match *color {
maliput_sys::api::rules::ffi::BulbColor::kRed => BulbColor::Red,
maliput_sys::api::rules::ffi::BulbColor::kYellow => BulbColor::Yellow,
maliput_sys::api::rules::ffi::BulbColor::kGreen => BulbColor::Green,
_ => panic!("Invalid bulb color"),
}
}
pub fn bulb_type(&self) -> BulbType {
let bulb_type = maliput_sys::api::rules::ffi::Bulb_type(self.bulb);
match *bulb_type {
maliput_sys::api::rules::ffi::BulbType::kRound => BulbType::Round,
maliput_sys::api::rules::ffi::BulbType::kArrow => BulbType::Arrow,
maliput_sys::api::rules::ffi::BulbType::kArrowLeft => BulbType::ArrowLeft,
maliput_sys::api::rules::ffi::BulbType::kArrowRight => BulbType::ArrowRight,
maliput_sys::api::rules::ffi::BulbType::kArrowUp => BulbType::ArrowUp,
maliput_sys::api::rules::ffi::BulbType::kArrowUpperLeft => BulbType::ArrowUpperLeft,
maliput_sys::api::rules::ffi::BulbType::kArrowUpperRight => BulbType::ArrowUpperRight,
maliput_sys::api::rules::ffi::BulbType::kUTurnLeft => BulbType::UTurnLeft,
maliput_sys::api::rules::ffi::BulbType::kUTurnRight => BulbType::UTurnRight,
maliput_sys::api::rules::ffi::BulbType::kWalk => BulbType::Walk,
maliput_sys::api::rules::ffi::BulbType::kDontWalk => BulbType::DontWalk,
_ => panic!("Invalid bulb type"),
}
}
pub fn position_bulb_group(&self) -> super::InertialPosition {
let inertial_position = maliput_sys::api::rules::ffi::Bulb_position_bulb_group(self.bulb);
super::InertialPosition { ip: inertial_position }
}
pub fn orientation_bulb_group(&self) -> super::Rotation {
let rotation = maliput_sys::api::rules::ffi::Bulb_orientation_bulb_group(self.bulb);
super::Rotation { r: rotation }
}
pub fn arrow_orientation_rad(&self) -> Option<f64> {
let arrow_orientation = maliput_sys::api::rules::ffi::Bulb_arrow_orientation_rad(self.bulb);
if arrow_orientation.is_null() {
return None;
}
Some(arrow_orientation.value)
}
pub fn states(&self) -> Vec<BulbState> {
let states_cpp = maliput_sys::api::rules::ffi::Bulb_states(self.bulb);
states_cpp
.into_iter()
.map(Bulb::_from_cpp_state_to_rust_state)
.collect::<Vec<BulbState>>()
}
pub fn get_default_state(&self) -> BulbState {
let default_state = self.bulb.GetDefaultState();
Bulb::_from_cpp_state_to_rust_state(&default_state)
}
pub fn is_valid_state(&self, state: &BulbState) -> bool {
self.bulb.IsValidState(&Bulb::_from_rust_state_to_cpp_state(state))
}
pub fn bounding_box(&self) -> (crate::math::Vector3, crate::math::Vector3) {
let min = maliput_sys::api::rules::ffi::Bulb_bounding_box_min(self.bulb);
let max = maliput_sys::api::rules::ffi::Bulb_bounding_box_max(self.bulb);
(crate::math::Vector3 { v: min }, crate::math::Vector3 { v: max })
}
pub fn bulb_group(&self) -> BulbGroup<'_> {
BulbGroup {
bulb_group: unsafe {
maliput_sys::api::rules::ffi::Bulb_bulb_group(self.bulb)
.as_ref()
.expect("Unable to get underlying bulb group pointer. The Bulb might not be part of any BulbGroup.")
},
}
}
fn _from_cpp_state_to_rust_state(cpp_bulb_state: &maliput_sys::api::rules::ffi::BulbState) -> BulbState {
match *cpp_bulb_state {
maliput_sys::api::rules::ffi::BulbState::kOff => BulbState::Off,
maliput_sys::api::rules::ffi::BulbState::kOn => BulbState::On,
maliput_sys::api::rules::ffi::BulbState::kBlinking => BulbState::Blinking,
_ => panic!("Invalid bulb state"),
}
}
fn _from_rust_state_to_cpp_state(rust_bulb_state: &BulbState) -> maliput_sys::api::rules::ffi::BulbState {
match rust_bulb_state {
BulbState::Off => maliput_sys::api::rules::ffi::BulbState::kOff,
BulbState::On => maliput_sys::api::rules::ffi::BulbState::kOn,
BulbState::Blinking => maliput_sys::api::rules::ffi::BulbState::kBlinking,
}
}
}
pub struct BulbGroup<'a> {
pub bulb_group: &'a maliput_sys::api::rules::ffi::BulbGroup,
}
impl BulbGroup<'_> {
pub fn unique_id(&self) -> UniqueBulbGroupId {
UniqueBulbGroupId {
unique_bulb_group_id: maliput_sys::api::rules::ffi::BulbGroup_unique_id(self.bulb_group),
}
}
pub fn id(&self) -> String {
maliput_sys::api::rules::ffi::BulbGroup_id(self.bulb_group)
}
pub fn position_traffic_light(&self) -> super::InertialPosition {
let inertial_position = maliput_sys::api::rules::ffi::BulbGroup_position_traffic_light(self.bulb_group);
super::InertialPosition { ip: inertial_position }
}
pub fn orientation_traffic_light(&self) -> super::Rotation {
let rotation = maliput_sys::api::rules::ffi::BulbGroup_orientation_traffic_light(self.bulb_group);
super::Rotation { r: rotation }
}
pub fn bulbs(&self) -> Vec<Bulb<'_>> {
let bulbs_cpp = maliput_sys::api::rules::ffi::BulbGroup_bulbs(self.bulb_group);
bulbs_cpp
.into_iter()
.map(|b| Bulb {
bulb: unsafe { b.bulb.as_ref().expect("") },
})
.collect::<Vec<Bulb>>()
}
pub fn get_bulb(&self, id: &String) -> Option<Bulb<'_>> {
let bulb = maliput_sys::api::rules::ffi::BulbGroup_GetBulb(self.bulb_group, id);
if bulb.is_null() {
return None;
}
Some(Bulb {
bulb: unsafe { bulb.as_ref().expect("Unable to get underlying bulb pointer") },
})
}
pub fn traffic_light(&self) -> TrafficLight<'_> {
TrafficLight {
traffic_light: unsafe {
maliput_sys::api::rules::ffi::BulbGroup_traffic_light(self.bulb_group)
.as_ref()
.expect("Unable to get underlying traffic light pointer. The BulbGroup might not be registered to a TrafficLight.")
},
}
}
}
pub struct UniqueBulbId {
pub(crate) unique_bulb_id: cxx::UniquePtr<maliput_sys::api::rules::ffi::UniqueBulbId>,
}
impl UniqueBulbId {
pub fn traffic_light_id(&self) -> String {
maliput_sys::api::rules::ffi::UniqueBulbId_traffic_light_id(&self.unique_bulb_id)
}
pub fn bulb_group_id(&self) -> String {
maliput_sys::api::rules::ffi::UniqueBulbId_bulb_group_id(&self.unique_bulb_id)
}
pub fn bulb_id(&self) -> String {
maliput_sys::api::rules::ffi::UniqueBulbId_bulb_id(&self.unique_bulb_id)
}
pub fn string(&self) -> String {
self.unique_bulb_id.string().to_string()
}
}
pub struct UniqueBulbGroupId {
unique_bulb_group_id: cxx::UniquePtr<maliput_sys::api::rules::ffi::UniqueBulbGroupId>,
}
impl UniqueBulbGroupId {
pub fn traffic_light_id(&self) -> String {
maliput_sys::api::rules::ffi::UniqueBulbGroupId_traffic_light_id(&self.unique_bulb_group_id)
}
pub fn bulb_group_id(&self) -> String {
maliput_sys::api::rules::ffi::UniqueBulbGroupId_bulb_group_id(&self.unique_bulb_group_id)
}
pub fn string(&self) -> String {
self.unique_bulb_group_id.string().to_string()
}
}
pub struct RuleRegistry<'a> {
pub(super) rule_registry: &'a maliput_sys::api::rules::ffi::RuleRegistry,
}
pub enum RuleValuesByType {
DiscreteValues(Vec<DiscreteValue>),
Ranges(Vec<Range>),
}
impl<'a> RuleRegistry<'a> {
pub fn get_discrete_value_rule_types(&self) -> Vec<String> {
let discrete_value_types =
maliput_sys::api::rules::ffi::RuleRegistry_DiscreteValueRuleTypes(self.rule_registry);
let discrete_value_types = discrete_value_types
.as_ref()
.expect("Unable to get underlying discrete value rule types pointer.");
discrete_value_types.iter().map(|dvt| dvt.type_id.clone()).collect()
}
pub fn discrete_values_by_type(&self, rule_type_id: String) -> Option<Vec<DiscreteValue>> {
let discrete_value_types =
maliput_sys::api::rules::ffi::RuleRegistry_DiscreteValueRuleTypes(self.rule_registry);
let discrete_value_types = discrete_value_types
.as_ref()
.expect("Unable to get underlying discrete value rule types pointer.");
discrete_value_types
.iter()
.find(|dvt| dvt.type_id == rule_type_id)
.map(|dvt| discrete_values_from_cxx(&dvt.values))
}
pub fn get_range_rule_types(&self) -> Vec<String> {
let range_value_types = maliput_sys::api::rules::ffi::RuleRegistry_RangeValueRuleTypes(self.rule_registry);
let range_value_types = range_value_types
.as_ref()
.expect("Unable to get underlying range rule types pointer.");
range_value_types.iter().map(|rvt| rvt.type_id.clone()).collect()
}
pub fn range_values_by_type(&self, rule_type_id: String) -> Option<Vec<Range>> {
let range_value_types = maliput_sys::api::rules::ffi::RuleRegistry_RangeValueRuleTypes(self.rule_registry);
let range_value_types = range_value_types
.as_ref()
.expect("Unable to get underlying range rule types pointer.");
range_value_types
.iter()
.find(|rvt| rvt.type_id == rule_type_id)
.map(|rvt| range_values_from_cxx(&rvt.values))
}
pub fn get_possible_states_of_rule_type(&self, rule_type_id: String) -> Option<RuleValuesByType> {
if let Some(ranges) = self.range_values_by_type(rule_type_id.clone()) {
Some(RuleValuesByType::Ranges(ranges))
} else {
self.discrete_values_by_type(rule_type_id)
.map(RuleValuesByType::DiscreteValues)
}
}
}
pub struct QueryResults {
pub discrete_value_rules: std::collections::HashMap<String, DiscreteValueRule>,
pub range_value_rules: std::collections::HashMap<String, RangeValueRule>,
}
pub struct RoadRulebook<'a> {
pub(super) road_rulebook: &'a maliput_sys::api::rules::ffi::RoadRulebook,
}
impl<'a> RoadRulebook<'a> {
pub fn get_discrete_value_rule(&self, rule_id: &String) -> Option<DiscreteValueRule> {
let discrete_value_rule =
maliput_sys::api::rules::ffi::RoadRulebook_GetDiscreteValueRule(self.road_rulebook, rule_id);
if discrete_value_rule.is_null() {
return None;
}
Some(DiscreteValueRule { discrete_value_rule })
}
pub fn get_range_value_rule(&self, rule_id: &String) -> Option<RangeValueRule> {
let range_value_rule =
maliput_sys::api::rules::ffi::RoadRulebook_GetRangeValueRule(self.road_rulebook, rule_id);
if range_value_rule.is_null() {
return None;
}
Some(RangeValueRule { range_value_rule })
}
pub fn rules(&self) -> QueryResults {
let query_results_cpp = maliput_sys::api::rules::ffi::RoadRulebook_Rules(self.road_rulebook);
let discrete_value_rules_id =
maliput_sys::api::rules::ffi::QueryResults_discrete_value_rules(&query_results_cpp);
let range_value_rules_id = maliput_sys::api::rules::ffi::QueryResults_range_value_rules(&query_results_cpp);
let mut dvr_map = std::collections::HashMap::new();
for rule_id in discrete_value_rules_id {
let rule = self.get_discrete_value_rule(&rule_id).unwrap();
dvr_map.insert(rule.id(), rule);
}
let mut rvr_map = std::collections::HashMap::new();
for rule_id in range_value_rules_id {
let rule = self.get_range_value_rule(&rule_id).unwrap();
rvr_map.insert(rule.id(), rule);
}
QueryResults {
discrete_value_rules: dvr_map,
range_value_rules: rvr_map,
}
}
pub fn find_rules(&self, ranges: &Vec<super::LaneSRange>, tolerance: f64) -> Result<QueryResults, MaliputError> {
let mut ranges_cpp = Vec::new();
for range in ranges {
ranges_cpp.push(maliput_sys::api::rules::ffi::ConstLaneSRangeRef {
lane_s_range: &range.lane_s_range,
});
}
let query_results_cpp =
maliput_sys::api::rules::ffi::RoadRulebook_FindRules(self.road_rulebook, &ranges_cpp, tolerance)?;
let discrete_value_rules_id =
maliput_sys::api::rules::ffi::QueryResults_discrete_value_rules(&query_results_cpp);
let range_value_rules_id = maliput_sys::api::rules::ffi::QueryResults_range_value_rules(&query_results_cpp);
let mut dvr_map = std::collections::HashMap::new();
for rule_id in discrete_value_rules_id {
if let Some(rule) = self.get_discrete_value_rule(&rule_id) {
dvr_map.insert(rule.id(), rule);
}
}
let mut rvr_map = std::collections::HashMap::new();
for rule_id in range_value_rules_id {
if let Some(rule) = self.get_range_value_rule(&rule_id) {
rvr_map.insert(rule.id(), rule);
}
}
Ok(QueryResults {
discrete_value_rules: dvr_map,
range_value_rules: rvr_map,
})
}
}
pub struct DiscreteValueRule {
discrete_value_rule: cxx::UniquePtr<maliput_sys::api::rules::ffi::DiscreteValueRule>,
}
impl DiscreteValueRule {
pub fn id(&self) -> String {
maliput_sys::api::rules::ffi::DiscreteValueRule_id(&self.discrete_value_rule)
}
pub fn type_id(&self) -> String {
maliput_sys::api::rules::ffi::DiscreteValueRule_type_id(&self.discrete_value_rule)
}
pub fn zone(&self) -> super::LaneSRoute {
let lane_s_route = maliput_sys::api::rules::ffi::DiscreteValueRule_zone(&self.discrete_value_rule);
super::LaneSRoute { lane_s_route }
}
pub fn states(&self) -> Vec<DiscreteValue> {
discrete_values_from_cxx(self.discrete_value_rule.states())
}
}
impl std::fmt::Debug for DiscreteValueRule {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"DiscreteValueRule {{ id: {}, type_id: {}, zone: {:?}, states: {:?} }}",
self.id(),
self.type_id(),
self.zone(),
self.states()
)
}
}
pub struct DiscreteValueRuleState {
pub rule_id: String,
pub state: DiscreteValue,
}
pub struct RangeValueRule {
range_value_rule: cxx::UniquePtr<maliput_sys::api::rules::ffi::RangeValueRule>,
}
impl RangeValueRule {
pub fn id(&self) -> String {
maliput_sys::api::rules::ffi::RangeValueRule_id(&self.range_value_rule)
}
pub fn type_id(&self) -> String {
maliput_sys::api::rules::ffi::RangeValueRule_type_id(&self.range_value_rule)
}
pub fn zone(&self) -> super::LaneSRoute {
let lane_s_route = maliput_sys::api::rules::ffi::RangeValueRule_zone(&self.range_value_rule);
super::LaneSRoute { lane_s_route }
}
pub fn states(&self) -> Vec<Range> {
range_values_from_cxx(self.range_value_rule.states())
}
}
#[derive(Display, IntoStaticStr)]
pub enum RuleType {
#[strum(serialize = "Direction-Usage Rule Type")]
DirectionUsage,
#[strum(serialize = "Right-Of-Way Rule Type")]
RightOfWay,
#[strum(serialize = "Vehicle-Stop-In-Zone-Behavior Rule Type")]
VehicleStopInZoneBehavior,
#[strum(serialize = "Speed-Limit Rule Type")]
SpeedLimit,
}
impl RuleType {
pub fn get_rule_id(&self, lane_id: &str) -> String {
self.to_string() + "/" + lane_id
}
}
pub struct RuleStateBase {
severity: i32,
related_rules: cxx::UniquePtr<cxx::CxxVector<maliput_sys::api::rules::ffi::RelatedRule>>,
related_unique_ids: cxx::UniquePtr<cxx::CxxVector<maliput_sys::api::rules::ffi::RelatedUniqueId>>,
}
pub trait RuleState {
fn get_rule_state(&self) -> &RuleStateBase;
fn severity(&self) -> i32 {
self.get_rule_state().severity
}
fn related_rules(&self) -> std::collections::HashMap<&String, &Vec<String>> {
self.get_rule_state()
.related_rules
.iter()
.map(|rr| (&rr.group_name, &rr.rule_ids))
.collect::<std::collections::HashMap<&String, &Vec<String>>>()
}
fn related_unique_ids(&self) -> std::collections::HashMap<&String, &Vec<String>> {
self.get_rule_state()
.related_unique_ids
.iter()
.map(|rui| (&rui.group_name, &rui.unique_ids))
.collect::<std::collections::HashMap<&String, &Vec<String>>>()
}
}
pub struct DiscreteValue {
rule_state: RuleStateBase,
value: String,
}
impl RuleState for DiscreteValue {
fn get_rule_state(&self) -> &RuleStateBase {
&self.rule_state
}
}
impl DiscreteValue {
pub fn value(&self) -> &String {
&self.value
}
}
impl std::fmt::Debug for DiscreteValue {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"DiscreteValue {{ value: {}, severity: {}, related_rules: {:?}, related_unique_ids: {:?} }}",
self.value(),
self.severity(),
self.related_rules(),
self.related_unique_ids()
)
}
}
pub struct Range {
rule_state: RuleStateBase,
description: String,
min: f64,
max: f64,
}
impl RuleState for Range {
fn get_rule_state(&self) -> &RuleStateBase {
&self.rule_state
}
}
impl Range {
pub fn description(&self) -> &String {
&self.description
}
pub fn min(&self) -> f64 {
self.min
}
pub fn max(&self) -> f64 {
self.max
}
}
pub struct Phase {
phase: cxx::UniquePtr<maliput_sys::api::rules::ffi::Phase>,
}
impl Phase {
pub fn id(&self) -> String {
maliput_sys::api::rules::ffi::Phase_id(&self.phase)
}
pub fn discrete_value_rule_states(&self) -> HashMap<String, DiscreteValue> {
let rule_states = maliput_sys::api::rules::ffi::Phase_discrete_value_rule_states(&self.phase);
rule_states
.iter()
.map(|state| {
(
state.rule_id.clone(),
discrete_value_from_discrete_value_cxx(&state.state),
)
})
.collect()
}
pub fn unique_bulb_ids(&self) -> Vec<UniqueBulbId> {
let unique_bulb_ids = maliput_sys::api::rules::ffi::Phase_unique_bulb_ids(&self.phase);
unique_bulb_ids
.iter()
.map(|bulb_id| UniqueBulbId {
unique_bulb_id: maliput_sys::api::rules::ffi::ptr_from_unique_bulb_id(bulb_id),
})
.collect()
}
pub fn bulb_state(&self, unique_bulb_id: &UniqueBulbId) -> Option<BulbState> {
let bulb_state = maliput_sys::api::rules::ffi::Phase_bulb_state(&self.phase, &unique_bulb_id.unique_bulb_id);
if bulb_state.is_null() {
return None;
}
Some(match *bulb_state {
maliput_sys::api::rules::ffi::BulbState::kOff => BulbState::Off,
maliput_sys::api::rules::ffi::BulbState::kOn => BulbState::On,
maliput_sys::api::rules::ffi::BulbState::kBlinking => BulbState::Blinking,
_ => return None,
})
}
}
pub struct NextPhase {
pub next_phase: Phase,
pub duration_until: Option<f64>,
}
pub struct PhaseRing {
phase_ring: cxx::UniquePtr<maliput_sys::api::rules::ffi::PhaseRing>,
}
impl PhaseRing {
pub fn id(&self) -> String {
maliput_sys::api::rules::ffi::PhaseRing_id(&self.phase_ring)
}
pub fn get_phase(&self, id: &String) -> Option<Phase> {
let phase = maliput_sys::api::rules::ffi::PhaseRing_GetPhase(&self.phase_ring, id);
if phase.is_null() {
return None;
}
Some(Phase { phase })
}
pub fn phases(&self) -> Vec<String> {
maliput_sys::api::rules::ffi::PhaseRing_phases_ids(&self.phase_ring)
}
pub fn get_next_phases(&self, id: &String) -> Result<Vec<NextPhase>, MaliputError> {
let next_phases = maliput_sys::api::rules::ffi::PhaseRing_GetNextPhases(&self.phase_ring, id)?;
Ok(next_phases
.iter()
.map(|np| NextPhase {
next_phase: Phase {
phase: maliput_sys::api::rules::ffi::PhaseRing_GetPhase(&self.phase_ring, &np.phase_id),
},
duration_until: if np.duration_until.is_null() {
None
} else {
Some(np.duration_until.value)
},
})
.collect())
}
}
pub struct PhaseRingBook<'a> {
pub(super) phase_ring_book: &'a maliput_sys::api::rules::ffi::PhaseRingBook,
}
impl<'a> PhaseRingBook<'a> {
pub fn get_phase_rings_ids(&self) -> Vec<String> {
maliput_sys::api::rules::ffi::PhaseRingBook_GetPhaseRingsId(self.phase_ring_book)
}
pub fn get_phase_ring(&self, phase_ring_id: &String) -> Option<PhaseRing> {
let phase_ring = maliput_sys::api::rules::ffi::PhaseRingBook_GetPhaseRing(self.phase_ring_book, phase_ring_id);
if phase_ring.is_null() {
return None;
}
Some(PhaseRing { phase_ring })
}
pub fn find_phase_ring(&self, rule_id: &String) -> Option<PhaseRing> {
let phase_ring = maliput_sys::api::rules::ffi::PhaseRingBook_FindPhaseRing(self.phase_ring_book, rule_id);
if phase_ring.is_null() {
return None;
}
Some(PhaseRing { phase_ring })
}
}
pub struct NextState<T> {
pub next_state: T,
pub duration_until: Option<f64>,
}
pub struct StateProviderQuery<T> {
pub state: T,
pub next: Option<NextState<T>>,
}
pub type PhaseStateProviderQuery = StateProviderQuery<String>;
pub struct PhaseProvider<'a> {
pub(super) phase_provider: &'a maliput_sys::api::rules::ffi::PhaseProvider,
}
impl<'a> PhaseProvider<'a> {
pub fn get_phase(&self, phase_ring_id: &String) -> Option<PhaseStateProviderQuery> {
let phase_state = maliput_sys::api::rules::ffi::PhaseProvider_GetPhase(self.phase_provider, phase_ring_id);
if phase_state.is_null() {
return None;
}
let next_state = maliput_sys::api::rules::ffi::PhaseStateProvider_next(&phase_state);
let next_phase = if next_state.is_null() {
None
} else {
Some(NextState {
next_state: next_state.phase_id.clone(),
duration_until: if next_state.duration_until.is_null() {
None
} else {
Some(next_state.duration_until.value)
},
})
};
Some(StateProviderQuery {
state: maliput_sys::api::rules::ffi::PhaseStateProvider_state(&phase_state),
next: next_phase,
})
}
}
pub struct DiscreteValueRuleStateProvider<'a> {
pub(super) state_provider: &'a maliput_sys::api::rules::ffi::DiscreteValueRuleStateProvider,
}
impl<'a> DiscreteValueRuleStateProvider<'a> {
pub fn get_state_by_rule_id(&self, rule_id: &String) -> Option<StateProviderQuery<DiscreteValue>> {
let query_state =
maliput_sys::api::rules::ffi::DiscreteValueRuleStateProvider_GetStateById(self.state_provider, rule_id);
Self::next_state_from_cxx_query(query_state)
}
pub fn get_state_by_rule_type(
&self,
road_position: &RoadPosition,
rule_type: RuleType,
tolerance: f64,
) -> Option<StateProviderQuery<DiscreteValue>> {
let query_state = maliput_sys::api::rules::ffi::DiscreteValueRuleStateProvider_GetStateByType(
self.state_provider,
&road_position.rp,
&rule_type.to_string(),
tolerance,
);
Self::next_state_from_cxx_query(query_state)
}
fn next_state_from_cxx_query(
query_state: cxx::UniquePtr<maliput_sys::api::rules::ffi::DiscreteValueRuleStateProviderQuery>,
) -> Option<StateProviderQuery<DiscreteValue>> {
if query_state.is_null() {
return None;
}
let next_state = maliput_sys::api::rules::ffi::DiscreteValueRuleStateProviderQuery_next(&query_state);
Some(StateProviderQuery {
state: discrete_value_from_discrete_value_cxx(
&maliput_sys::api::rules::ffi::DiscreteValueRuleStateProviderQuery_state(&query_state),
),
next: if next_state.is_null() {
None
} else {
Some(NextState {
next_state: discrete_value_from_discrete_value_cxx(&next_state.state),
duration_until: if next_state.duration_until.is_null() {
None
} else {
Some(next_state.duration_until.value)
},
})
},
})
}
}
pub struct RangeValueRuleStateProvider<'a> {
pub(super) state_provider: &'a maliput_sys::api::rules::ffi::RangeValueRuleStateProvider,
}
impl<'a> RangeValueRuleStateProvider<'a> {
pub fn get_state_by_rule_id(&self, rule_id: &String) -> Option<StateProviderQuery<Range>> {
let query_state =
maliput_sys::api::rules::ffi::RangeValueRuleStateProvider_GetStateById(self.state_provider, rule_id);
Self::next_state_from_cxx_query(query_state)
}
pub fn get_state_by_rule_type(
&self,
road_position: &RoadPosition,
rule_type: RuleType,
tolerance: f64,
) -> Option<StateProviderQuery<Range>> {
let query_state = maliput_sys::api::rules::ffi::RangeValueRuleStateProvider_GetStateByType(
self.state_provider,
&road_position.rp,
&rule_type.to_string(),
tolerance,
);
Self::next_state_from_cxx_query(query_state)
}
fn next_state_from_cxx_query(
query_state: cxx::UniquePtr<maliput_sys::api::rules::ffi::RangeValueRuleStateProviderQuery>,
) -> Option<StateProviderQuery<Range>> {
if query_state.is_null() {
return None;
}
let next_state = maliput_sys::api::rules::ffi::RangeValueRuleStateProviderQuery_next(&query_state);
Some(StateProviderQuery {
state: range_value_from_range_value_cxx(
&maliput_sys::api::rules::ffi::RangeValueRuleStateProviderQuery_state(&query_state),
),
next: if next_state.is_null() {
None
} else {
Some(NextState {
next_state: range_value_from_range_value_cxx(&next_state.state),
duration_until: if next_state.duration_until.is_null() {
None
} else {
Some(next_state.duration_until.value)
},
})
},
})
}
}
fn range_values_from_cxx(
range_values_cxx: &cxx::Vector<maliput_sys::api::rules::ffi::RangeValueRuleRange>,
) -> Vec<Range> {
range_values_cxx
.iter()
.map(|range| Range {
rule_state: RuleStateBase {
severity: maliput_sys::api::rules::ffi::RangeValueRuleRange_severity(range),
related_rules: maliput_sys::api::rules::ffi::RangeValueRuleRange_related_rules(range),
related_unique_ids: maliput_sys::api::rules::ffi::RangeValueRuleRange_related_unique_ids(range),
},
description: maliput_sys::api::rules::ffi::RangeValueRuleRange_description(range),
min: maliput_sys::api::rules::ffi::RangeValueRuleRange_min(range),
max: maliput_sys::api::rules::ffi::RangeValueRuleRange_max(range),
})
.collect()
}
fn discrete_values_from_cxx(
discrete_values_cxx: &cxx::Vector<maliput_sys::api::rules::ffi::DiscreteValueRuleDiscreteValue>,
) -> Vec<DiscreteValue> {
discrete_values_cxx
.iter()
.map(discrete_value_from_discrete_value_cxx)
.collect()
}
pub(crate) fn discrete_value_from_discrete_value_cxx(
discrete_value: &maliput_sys::api::rules::ffi::DiscreteValueRuleDiscreteValue,
) -> DiscreteValue {
DiscreteValue {
rule_state: RuleStateBase {
severity: maliput_sys::api::rules::ffi::DiscreteValueRuleDiscreteValue_severity(discrete_value),
related_rules: maliput_sys::api::rules::ffi::DiscreteValueRuleDiscreteValue_related_rules(discrete_value),
related_unique_ids: maliput_sys::api::rules::ffi::DiscreteValueRuleDiscreteValue_related_unique_ids(
discrete_value,
),
},
value: maliput_sys::api::rules::ffi::DiscreteValueRuleDiscreteValue_value(discrete_value),
}
}
fn range_value_from_range_value_cxx(range: &maliput_sys::api::rules::ffi::RangeValueRuleRange) -> Range {
Range {
rule_state: RuleStateBase {
severity: maliput_sys::api::rules::ffi::RangeValueRuleRange_severity(range),
related_rules: maliput_sys::api::rules::ffi::RangeValueRuleRange_related_rules(range),
related_unique_ids: maliput_sys::api::rules::ffi::RangeValueRuleRange_related_unique_ids(range),
},
description: maliput_sys::api::rules::ffi::RangeValueRuleRange_description(range),
min: maliput_sys::api::rules::ffi::RangeValueRuleRange_min(range),
max: maliput_sys::api::rules::ffi::RangeValueRuleRange_max(range),
}
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum TrafficSignType {
None,
Other,
Stop,
Yield,
SpeedLimit,
NoEntry,
OneWay,
PedestrianCrossing,
NoLeftTurn,
NoRightTurn,
NoUTurn,
SchoolZone,
Construction,
RailroadCrossing,
NoOvertaking,
AllWay,
NoUTurnLeft,
NoUTurnRight,
StopLine,
Crosswalk,
DangerSpot,
ZebraCrossing,
Flight,
Cattle,
HorseRiders,
Amphibians,
FallingRocks,
SnowOrIce,
LooseGravel,
Waterside,
Clearance,
MovableBridge,
RightBeforeLeftNextIntersection,
TurnLeft,
TurnRight,
DoubleTurnLeft,
DoubleTurnRight,
HillDownwards,
HillUpwards,
UnevenRoad,
RoadSlipperyWetOrDirty,
SideWinds,
RoadNarrowing,
RoadNarrowingRight,
RoadNarrowingLeft,
RoadWorks,
TrafficQueues,
TwoWayTraffic,
AttentionTrafficLight,
Pedestrians,
ChildrenCrossing,
CycleRoute,
DeerCrossing,
UngatedLevelCrossing,
LevelCrossingMarker,
RailwayTrafficPriority,
GiveWay,
PriorityToOppositeDirection,
PriorityToOppositeDirectionUpsideDown,
PrescribedLeftTurn,
PrescribedRightTurn,
PrescribedStraight,
PrescribedRightWay,
PrescribedLeftWay,
PrescribedRightTurnAndStraight,
PrescribedLeftTurnAndStraight,
PrescribedLeftTurnAndRightTurn,
PrescribedLeftTurnRightTurnAndStraight,
Roundabout,
OnewayLeft,
OnewayRight,
PassLeft,
PassRight,
SideLaneOpenForTraffic,
SideLaneClosedForTraffic,
SideLaneClosingForTraffic,
BusStop,
TaxiStand,
BicyclesOnly,
HorseRidersOnly,
PedestriansOnly,
BicyclesPedestriansSharedOnly,
BicyclesPedestriansSeparatedLeftOnly,
BicyclesPedestriansSeparatedRightOnly,
PedestrianZoneBegin,
PedestrianZoneEnd,
BicycleRoadBegin,
BicycleRoadEnd,
BusLane,
BusLaneBegin,
BusLaneEnd,
AllProhibited,
MotorizedMultitrackProhibited,
TrucksProhibited,
BicyclesProhibited,
MotorcyclesProhibited,
MopedsProhibited,
HorseRidersProhibited,
HorseCarriagesProhibited,
CattleProhibited,
BusesProhibited,
CarsProhibited,
CarsTrailersProhibited,
TrucksTrailersProhibited,
TractorsProhibited,
PedestriansProhibited,
MotorVehiclesProhibited,
HazardousGoodsVehiclesProhibited,
OverWeightVehiclesProhibited,
VehiclesAxleOverWeightProhibited,
VehiclesExcessWidthProhibited,
VehiclesExcessHeightProhibited,
VehiclesExcessLengthProhibited,
DoNotEnter,
SnowChainsRequired,
WaterPollutantVehiclesProhibited,
EnvironmentalZoneBegin,
EnvironmentalZoneEnd,
PrescribedUTurnLeft,
PrescribedUTurnRight,
MinimumDistanceForTrucks,
SpeedLimitBegin,
SpeedLimitZoneBegin,
SpeedLimitZoneEnd,
MinimumSpeedBegin,
OvertakingBanBegin,
OvertakingBanForTrucksBegin,
SpeedLimitEnd,
MinimumSpeedEnd,
OvertakingBanEnd,
OvertakingBanForTrucksEnd,
AllRestrictionsEnd,
NoStopping,
NoParking,
NoParkingZoneBegin,
NoParkingZoneEnd,
RightOfWayNextIntersection,
RightOfWayBegin,
RightOfWayEnd,
PriorityOverOppositeDirection,
PriorityOverOppositeDirectionUpsideDown,
TownBegin,
TownEnd,
CarParking,
CarParkingZoneBegin,
CarParkingZoneEnd,
SidewalkHalfParkingLeft,
SidewalkHalfParkingRight,
SidewalkParkingLeft,
SidewalkParkingRight,
SidewalkPerpendicularHalfParkingLeft,
SidewalkPerpendicularHalfParkingRight,
SidewalkPerpendicularParkingLeft,
SidewalkPerpendicularParkingRight,
LivingStreetBegin,
LivingStreetEnd,
Tunnel,
EmergencyStoppingLeft,
EmergencyStoppingRight,
HighwayBegin,
HighwayEnd,
ExpresswayBegin,
ExpresswayEnd,
NamedHighwayExit,
NamedExpresswayExit,
NamedRoadExit,
HighwayExit,
ExpresswayExit,
OnewayStreet,
CrossingGuards,
Deadend,
DeadendExcludingDesignatedActors,
FirstAidStation,
PoliceStation,
Telephone,
FillingStation,
Hotel,
Inn,
Kiosk,
Toilet,
Chapel,
TouristInfo,
RepairService,
PedestrianUnderpass,
PedestrianBridge,
CamperPlace,
AdvisorySpeedLimitBegin,
AdvisorySpeedLimitEnd,
PlaceName,
TouristAttraction,
TouristRoute,
TouristArea,
ShoulderNotPassableMotorVehicles,
ShoulderUnsafeTrucksTractors,
TollBegin,
TollEnd,
TollRoad,
Customs,
InternationalBorderInfo,
StreetlightRedBand,
FederalHighwayRouteNumber,
HighwayRouteNumber,
HighwayInterchangeNumber,
EuropeanRouteNumber,
FederalHighwayDirectionLeft,
FederalHighwayDirectionRight,
PrimaryRoadDirectionLeft,
PrimaryRoadDirectionRight,
SecondaryRoadDirectionLeft,
SecondaryRoadDirectionRight,
DirectionDesignatedActorsLeft,
DirectionDesignatedActorsRight,
RoutingDesignatedActors,
DirectionToHighwayLeft,
DirectionToHighwayRight,
DirectionToLocalDestinationLeft,
DirectionToLocalDestinationRight,
ConsolidatedDirections,
StreetName,
DirectionPreannouncement,
DirectionPreannouncementLaneConfig,
DirectionPreannouncementHighwayEntries,
HighwayAnnouncement,
OtherRoadAnnouncement,
HighwayAnnouncementTruckStop,
HighwayPreannouncementDirections,
PoleExit,
HighwayDistanceBoard,
DetourLeft,
DetourRight,
NumberedDetour,
DetourBegin,
DetourEnd,
DetourRoutingBoard,
OptionalDetour,
OptionalDetourRouting,
RouteRecommendation,
RouteRecommendationEnd,
AnnounceLaneTransitionLeft,
AnnounceLaneTransitionRight,
AnnounceRightLaneEnd,
AnnounceLeftLaneEnd,
AnnounceRightLaneBegin,
AnnounceLeftLaneBegin,
AnnounceLaneConsolidation,
DetourCityBlock,
Gate,
PoleWarning,
TrafficCone,
MobileLaneClosure,
ReflectorPost,
DirectionalBoardWarning,
GuidingPlate,
GuidingPlateWedges,
ParkingHazard,
TrafficLightGreenArrow,
Text,
Space,
Time,
Arrow,
ConstrainedTo,
Except,
ValidForDistance,
PriorityRoadBottomLeftFourWay,
PriorityRoadTopLeftFourWay,
PriorityRoadBottomLeftThreeWayStraight,
PriorityRoadBottomLeftThreeWaySideways,
PriorityRoadTopLeftThreeWayStraight,
PriorityRoadBottomRightFourWay,
PriorityRoadTopRightFourWay,
PriorityRoadBottomRightThreeWayStraight,
PriorityRoadBottomRightThreeWaySideway,
PriorityRoadTopRightThreeWayStraight,
ValidInDistance,
StopIn,
LeftArrow,
LeftBendArrow,
RightArrow,
RightBendArrow,
Accident,
Snow,
Fog,
RollingHighwayInformation,
Services,
TimeRange,
ParkingDiscTimeRestriction,
Weight,
Wet,
ParkingConstraint,
NoWaitingSideStripes,
Rain,
SnowRain,
Night,
Stop4Way,
Truck,
TractorsMayBePassed,
Hazardous,
Trailer,
Zone,
Motorcycle,
MotorcycleAllowed,
Car,
Unknown,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum TrafficSignValueUnit {
MetersPerSecond,
KilometersPerHour,
MilesPerHour,
Meters,
Kilometers,
Feet,
Miles,
Percent,
Kilograms,
MetricTons,
}
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct TrafficSignValue {
pub value: f64,
pub unit: TrafficSignValueUnit,
}
fn traffic_sign_type_from_cpp(sign_type: &maliput_sys::api::rules::ffi::TrafficSignType) -> TrafficSignType {
match *sign_type {
maliput_sys::api::rules::ffi::TrafficSignType::kNone => TrafficSignType::None,
maliput_sys::api::rules::ffi::TrafficSignType::kOther => TrafficSignType::Other,
maliput_sys::api::rules::ffi::TrafficSignType::kStop => TrafficSignType::Stop,
maliput_sys::api::rules::ffi::TrafficSignType::kYield => TrafficSignType::Yield,
maliput_sys::api::rules::ffi::TrafficSignType::kSpeedLimit => TrafficSignType::SpeedLimit,
maliput_sys::api::rules::ffi::TrafficSignType::kNoEntry => TrafficSignType::NoEntry,
maliput_sys::api::rules::ffi::TrafficSignType::kOneWay => TrafficSignType::OneWay,
maliput_sys::api::rules::ffi::TrafficSignType::kPedestrianCrossing => TrafficSignType::PedestrianCrossing,
maliput_sys::api::rules::ffi::TrafficSignType::kNoLeftTurn => TrafficSignType::NoLeftTurn,
maliput_sys::api::rules::ffi::TrafficSignType::kNoRightTurn => TrafficSignType::NoRightTurn,
maliput_sys::api::rules::ffi::TrafficSignType::kNoUTurn => TrafficSignType::NoUTurn,
maliput_sys::api::rules::ffi::TrafficSignType::kSchoolZone => TrafficSignType::SchoolZone,
maliput_sys::api::rules::ffi::TrafficSignType::kConstruction => TrafficSignType::Construction,
maliput_sys::api::rules::ffi::TrafficSignType::kRailroadCrossing => TrafficSignType::RailroadCrossing,
maliput_sys::api::rules::ffi::TrafficSignType::kNoOvertaking => TrafficSignType::NoOvertaking,
maliput_sys::api::rules::ffi::TrafficSignType::kAllWay => TrafficSignType::AllWay,
maliput_sys::api::rules::ffi::TrafficSignType::kNoUTurnLeft => TrafficSignType::NoUTurnLeft,
maliput_sys::api::rules::ffi::TrafficSignType::kNoUTurnRight => TrafficSignType::NoUTurnRight,
maliput_sys::api::rules::ffi::TrafficSignType::kStopLine => TrafficSignType::StopLine,
maliput_sys::api::rules::ffi::TrafficSignType::kCrosswalk => TrafficSignType::Crosswalk,
maliput_sys::api::rules::ffi::TrafficSignType::kDangerSpot => TrafficSignType::DangerSpot,
maliput_sys::api::rules::ffi::TrafficSignType::kZebraCrossing => TrafficSignType::ZebraCrossing,
maliput_sys::api::rules::ffi::TrafficSignType::kFlight => TrafficSignType::Flight,
maliput_sys::api::rules::ffi::TrafficSignType::kCattle => TrafficSignType::Cattle,
maliput_sys::api::rules::ffi::TrafficSignType::kHorseRiders => TrafficSignType::HorseRiders,
maliput_sys::api::rules::ffi::TrafficSignType::kAmphibians => TrafficSignType::Amphibians,
maliput_sys::api::rules::ffi::TrafficSignType::kFallingRocks => TrafficSignType::FallingRocks,
maliput_sys::api::rules::ffi::TrafficSignType::kSnowOrIce => TrafficSignType::SnowOrIce,
maliput_sys::api::rules::ffi::TrafficSignType::kLooseGravel => TrafficSignType::LooseGravel,
maliput_sys::api::rules::ffi::TrafficSignType::kWaterside => TrafficSignType::Waterside,
maliput_sys::api::rules::ffi::TrafficSignType::kClearance => TrafficSignType::Clearance,
maliput_sys::api::rules::ffi::TrafficSignType::kMovableBridge => TrafficSignType::MovableBridge,
maliput_sys::api::rules::ffi::TrafficSignType::kRightBeforeLeftNextIntersection => {
TrafficSignType::RightBeforeLeftNextIntersection
}
maliput_sys::api::rules::ffi::TrafficSignType::kTurnLeft => TrafficSignType::TurnLeft,
maliput_sys::api::rules::ffi::TrafficSignType::kTurnRight => TrafficSignType::TurnRight,
maliput_sys::api::rules::ffi::TrafficSignType::kDoubleTurnLeft => TrafficSignType::DoubleTurnLeft,
maliput_sys::api::rules::ffi::TrafficSignType::kDoubleTurnRight => TrafficSignType::DoubleTurnRight,
maliput_sys::api::rules::ffi::TrafficSignType::kHillDownwards => TrafficSignType::HillDownwards,
maliput_sys::api::rules::ffi::TrafficSignType::kHillUpwards => TrafficSignType::HillUpwards,
maliput_sys::api::rules::ffi::TrafficSignType::kUnevenRoad => TrafficSignType::UnevenRoad,
maliput_sys::api::rules::ffi::TrafficSignType::kRoadSlipperyWetOrDirty => {
TrafficSignType::RoadSlipperyWetOrDirty
}
maliput_sys::api::rules::ffi::TrafficSignType::kSideWinds => TrafficSignType::SideWinds,
maliput_sys::api::rules::ffi::TrafficSignType::kRoadNarrowing => TrafficSignType::RoadNarrowing,
maliput_sys::api::rules::ffi::TrafficSignType::kRoadNarrowingRight => TrafficSignType::RoadNarrowingRight,
maliput_sys::api::rules::ffi::TrafficSignType::kRoadNarrowingLeft => TrafficSignType::RoadNarrowingLeft,
maliput_sys::api::rules::ffi::TrafficSignType::kRoadWorks => TrafficSignType::RoadWorks,
maliput_sys::api::rules::ffi::TrafficSignType::kTrafficQueues => TrafficSignType::TrafficQueues,
maliput_sys::api::rules::ffi::TrafficSignType::kTwoWayTraffic => TrafficSignType::TwoWayTraffic,
maliput_sys::api::rules::ffi::TrafficSignType::kAttentionTrafficLight => TrafficSignType::AttentionTrafficLight,
maliput_sys::api::rules::ffi::TrafficSignType::kPedestrians => TrafficSignType::Pedestrians,
maliput_sys::api::rules::ffi::TrafficSignType::kChildrenCrossing => TrafficSignType::ChildrenCrossing,
maliput_sys::api::rules::ffi::TrafficSignType::kCycleRoute => TrafficSignType::CycleRoute,
maliput_sys::api::rules::ffi::TrafficSignType::kDeerCrossing => TrafficSignType::DeerCrossing,
maliput_sys::api::rules::ffi::TrafficSignType::kUngatedLevelCrossing => TrafficSignType::UngatedLevelCrossing,
maliput_sys::api::rules::ffi::TrafficSignType::kLevelCrossingMarker => TrafficSignType::LevelCrossingMarker,
maliput_sys::api::rules::ffi::TrafficSignType::kRailwayTrafficPriority => {
TrafficSignType::RailwayTrafficPriority
}
maliput_sys::api::rules::ffi::TrafficSignType::kGiveWay => TrafficSignType::GiveWay,
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityToOppositeDirection => {
TrafficSignType::PriorityToOppositeDirection
}
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityToOppositeDirectionUpsideDown => {
TrafficSignType::PriorityToOppositeDirectionUpsideDown
}
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedLeftTurn => TrafficSignType::PrescribedLeftTurn,
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedRightTurn => TrafficSignType::PrescribedRightTurn,
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedStraight => TrafficSignType::PrescribedStraight,
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedRightWay => TrafficSignType::PrescribedRightWay,
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedLeftWay => TrafficSignType::PrescribedLeftWay,
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedRightTurnAndStraight => {
TrafficSignType::PrescribedRightTurnAndStraight
}
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedLeftTurnAndStraight => {
TrafficSignType::PrescribedLeftTurnAndStraight
}
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedLeftTurnAndRightTurn => {
TrafficSignType::PrescribedLeftTurnAndRightTurn
}
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedLeftTurnRightTurnAndStraight => {
TrafficSignType::PrescribedLeftTurnRightTurnAndStraight
}
maliput_sys::api::rules::ffi::TrafficSignType::kRoundabout => TrafficSignType::Roundabout,
maliput_sys::api::rules::ffi::TrafficSignType::kOnewayLeft => TrafficSignType::OnewayLeft,
maliput_sys::api::rules::ffi::TrafficSignType::kOnewayRight => TrafficSignType::OnewayRight,
maliput_sys::api::rules::ffi::TrafficSignType::kPassLeft => TrafficSignType::PassLeft,
maliput_sys::api::rules::ffi::TrafficSignType::kPassRight => TrafficSignType::PassRight,
maliput_sys::api::rules::ffi::TrafficSignType::kSideLaneOpenForTraffic => {
TrafficSignType::SideLaneOpenForTraffic
}
maliput_sys::api::rules::ffi::TrafficSignType::kSideLaneClosedForTraffic => {
TrafficSignType::SideLaneClosedForTraffic
}
maliput_sys::api::rules::ffi::TrafficSignType::kSideLaneClosingForTraffic => {
TrafficSignType::SideLaneClosingForTraffic
}
maliput_sys::api::rules::ffi::TrafficSignType::kBusStop => TrafficSignType::BusStop,
maliput_sys::api::rules::ffi::TrafficSignType::kTaxiStand => TrafficSignType::TaxiStand,
maliput_sys::api::rules::ffi::TrafficSignType::kBicyclesOnly => TrafficSignType::BicyclesOnly,
maliput_sys::api::rules::ffi::TrafficSignType::kHorseRidersOnly => TrafficSignType::HorseRidersOnly,
maliput_sys::api::rules::ffi::TrafficSignType::kPedestriansOnly => TrafficSignType::PedestriansOnly,
maliput_sys::api::rules::ffi::TrafficSignType::kBicyclesPedestriansSharedOnly => {
TrafficSignType::BicyclesPedestriansSharedOnly
}
maliput_sys::api::rules::ffi::TrafficSignType::kBicyclesPedestriansSeparatedLeftOnly => {
TrafficSignType::BicyclesPedestriansSeparatedLeftOnly
}
maliput_sys::api::rules::ffi::TrafficSignType::kBicyclesPedestriansSeparatedRightOnly => {
TrafficSignType::BicyclesPedestriansSeparatedRightOnly
}
maliput_sys::api::rules::ffi::TrafficSignType::kPedestrianZoneBegin => TrafficSignType::PedestrianZoneBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kPedestrianZoneEnd => TrafficSignType::PedestrianZoneEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kBicycleRoadBegin => TrafficSignType::BicycleRoadBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kBicycleRoadEnd => TrafficSignType::BicycleRoadEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kBusLane => TrafficSignType::BusLane,
maliput_sys::api::rules::ffi::TrafficSignType::kBusLaneBegin => TrafficSignType::BusLaneBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kBusLaneEnd => TrafficSignType::BusLaneEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kAllProhibited => TrafficSignType::AllProhibited,
maliput_sys::api::rules::ffi::TrafficSignType::kMotorizedMultitrackProhibited => {
TrafficSignType::MotorizedMultitrackProhibited
}
maliput_sys::api::rules::ffi::TrafficSignType::kTrucksProhibited => TrafficSignType::TrucksProhibited,
maliput_sys::api::rules::ffi::TrafficSignType::kBicyclesProhibited => TrafficSignType::BicyclesProhibited,
maliput_sys::api::rules::ffi::TrafficSignType::kMotorcyclesProhibited => TrafficSignType::MotorcyclesProhibited,
maliput_sys::api::rules::ffi::TrafficSignType::kMopedsProhibited => TrafficSignType::MopedsProhibited,
maliput_sys::api::rules::ffi::TrafficSignType::kHorseRidersProhibited => TrafficSignType::HorseRidersProhibited,
maliput_sys::api::rules::ffi::TrafficSignType::kHorseCarriagesProhibited => {
TrafficSignType::HorseCarriagesProhibited
}
maliput_sys::api::rules::ffi::TrafficSignType::kCattleProhibited => TrafficSignType::CattleProhibited,
maliput_sys::api::rules::ffi::TrafficSignType::kBusesProhibited => TrafficSignType::BusesProhibited,
maliput_sys::api::rules::ffi::TrafficSignType::kCarsProhibited => TrafficSignType::CarsProhibited,
maliput_sys::api::rules::ffi::TrafficSignType::kCarsTrailersProhibited => {
TrafficSignType::CarsTrailersProhibited
}
maliput_sys::api::rules::ffi::TrafficSignType::kTrucksTrailersProhibited => {
TrafficSignType::TrucksTrailersProhibited
}
maliput_sys::api::rules::ffi::TrafficSignType::kTractorsProhibited => TrafficSignType::TractorsProhibited,
maliput_sys::api::rules::ffi::TrafficSignType::kPedestriansProhibited => TrafficSignType::PedestriansProhibited,
maliput_sys::api::rules::ffi::TrafficSignType::kMotorVehiclesProhibited => {
TrafficSignType::MotorVehiclesProhibited
}
maliput_sys::api::rules::ffi::TrafficSignType::kHazardousGoodsVehiclesProhibited => {
TrafficSignType::HazardousGoodsVehiclesProhibited
}
maliput_sys::api::rules::ffi::TrafficSignType::kOverWeightVehiclesProhibited => {
TrafficSignType::OverWeightVehiclesProhibited
}
maliput_sys::api::rules::ffi::TrafficSignType::kVehiclesAxleOverWeightProhibited => {
TrafficSignType::VehiclesAxleOverWeightProhibited
}
maliput_sys::api::rules::ffi::TrafficSignType::kVehiclesExcessWidthProhibited => {
TrafficSignType::VehiclesExcessWidthProhibited
}
maliput_sys::api::rules::ffi::TrafficSignType::kVehiclesExcessHeightProhibited => {
TrafficSignType::VehiclesExcessHeightProhibited
}
maliput_sys::api::rules::ffi::TrafficSignType::kVehiclesExcessLengthProhibited => {
TrafficSignType::VehiclesExcessLengthProhibited
}
maliput_sys::api::rules::ffi::TrafficSignType::kDoNotEnter => TrafficSignType::DoNotEnter,
maliput_sys::api::rules::ffi::TrafficSignType::kSnowChainsRequired => TrafficSignType::SnowChainsRequired,
maliput_sys::api::rules::ffi::TrafficSignType::kWaterPollutantVehiclesProhibited => {
TrafficSignType::WaterPollutantVehiclesProhibited
}
maliput_sys::api::rules::ffi::TrafficSignType::kEnvironmentalZoneBegin => {
TrafficSignType::EnvironmentalZoneBegin
}
maliput_sys::api::rules::ffi::TrafficSignType::kEnvironmentalZoneEnd => TrafficSignType::EnvironmentalZoneEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedUTurnLeft => TrafficSignType::PrescribedUTurnLeft,
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedUTurnRight => TrafficSignType::PrescribedUTurnRight,
maliput_sys::api::rules::ffi::TrafficSignType::kMinimumDistanceForTrucks => {
TrafficSignType::MinimumDistanceForTrucks
}
maliput_sys::api::rules::ffi::TrafficSignType::kSpeedLimitBegin => TrafficSignType::SpeedLimitBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kSpeedLimitZoneBegin => TrafficSignType::SpeedLimitZoneBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kSpeedLimitZoneEnd => TrafficSignType::SpeedLimitZoneEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kMinimumSpeedBegin => TrafficSignType::MinimumSpeedBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kOvertakingBanBegin => TrafficSignType::OvertakingBanBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kOvertakingBanForTrucksBegin => {
TrafficSignType::OvertakingBanForTrucksBegin
}
maliput_sys::api::rules::ffi::TrafficSignType::kSpeedLimitEnd => TrafficSignType::SpeedLimitEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kMinimumSpeedEnd => TrafficSignType::MinimumSpeedEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kOvertakingBanEnd => TrafficSignType::OvertakingBanEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kOvertakingBanForTrucksEnd => {
TrafficSignType::OvertakingBanForTrucksEnd
}
maliput_sys::api::rules::ffi::TrafficSignType::kAllRestrictionsEnd => TrafficSignType::AllRestrictionsEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kNoStopping => TrafficSignType::NoStopping,
maliput_sys::api::rules::ffi::TrafficSignType::kNoParking => TrafficSignType::NoParking,
maliput_sys::api::rules::ffi::TrafficSignType::kNoParkingZoneBegin => TrafficSignType::NoParkingZoneBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kNoParkingZoneEnd => TrafficSignType::NoParkingZoneEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kRightOfWayNextIntersection => {
TrafficSignType::RightOfWayNextIntersection
}
maliput_sys::api::rules::ffi::TrafficSignType::kRightOfWayBegin => TrafficSignType::RightOfWayBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kRightOfWayEnd => TrafficSignType::RightOfWayEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityOverOppositeDirection => {
TrafficSignType::PriorityOverOppositeDirection
}
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityOverOppositeDirectionUpsideDown => {
TrafficSignType::PriorityOverOppositeDirectionUpsideDown
}
maliput_sys::api::rules::ffi::TrafficSignType::kTownBegin => TrafficSignType::TownBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kTownEnd => TrafficSignType::TownEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kCarParking => TrafficSignType::CarParking,
maliput_sys::api::rules::ffi::TrafficSignType::kCarParkingZoneBegin => TrafficSignType::CarParkingZoneBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kCarParkingZoneEnd => TrafficSignType::CarParkingZoneEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkHalfParkingLeft => {
TrafficSignType::SidewalkHalfParkingLeft
}
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkHalfParkingRight => {
TrafficSignType::SidewalkHalfParkingRight
}
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkParkingLeft => TrafficSignType::SidewalkParkingLeft,
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkParkingRight => TrafficSignType::SidewalkParkingRight,
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkPerpendicularHalfParkingLeft => {
TrafficSignType::SidewalkPerpendicularHalfParkingLeft
}
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkPerpendicularHalfParkingRight => {
TrafficSignType::SidewalkPerpendicularHalfParkingRight
}
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkPerpendicularParkingLeft => {
TrafficSignType::SidewalkPerpendicularParkingLeft
}
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkPerpendicularParkingRight => {
TrafficSignType::SidewalkPerpendicularParkingRight
}
maliput_sys::api::rules::ffi::TrafficSignType::kLivingStreetBegin => TrafficSignType::LivingStreetBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kLivingStreetEnd => TrafficSignType::LivingStreetEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kTunnel => TrafficSignType::Tunnel,
maliput_sys::api::rules::ffi::TrafficSignType::kEmergencyStoppingLeft => TrafficSignType::EmergencyStoppingLeft,
maliput_sys::api::rules::ffi::TrafficSignType::kEmergencyStoppingRight => {
TrafficSignType::EmergencyStoppingRight
}
maliput_sys::api::rules::ffi::TrafficSignType::kHighwayBegin => TrafficSignType::HighwayBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kHighwayEnd => TrafficSignType::HighwayEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kExpresswayBegin => TrafficSignType::ExpresswayBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kExpresswayEnd => TrafficSignType::ExpresswayEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kNamedHighwayExit => TrafficSignType::NamedHighwayExit,
maliput_sys::api::rules::ffi::TrafficSignType::kNamedExpresswayExit => TrafficSignType::NamedExpresswayExit,
maliput_sys::api::rules::ffi::TrafficSignType::kNamedRoadExit => TrafficSignType::NamedRoadExit,
maliput_sys::api::rules::ffi::TrafficSignType::kHighwayExit => TrafficSignType::HighwayExit,
maliput_sys::api::rules::ffi::TrafficSignType::kExpresswayExit => TrafficSignType::ExpresswayExit,
maliput_sys::api::rules::ffi::TrafficSignType::kOnewayStreet => TrafficSignType::OnewayStreet,
maliput_sys::api::rules::ffi::TrafficSignType::kCrossingGuards => TrafficSignType::CrossingGuards,
maliput_sys::api::rules::ffi::TrafficSignType::kDeadend => TrafficSignType::Deadend,
maliput_sys::api::rules::ffi::TrafficSignType::kDeadendExcludingDesignatedActors => {
TrafficSignType::DeadendExcludingDesignatedActors
}
maliput_sys::api::rules::ffi::TrafficSignType::kFirstAidStation => TrafficSignType::FirstAidStation,
maliput_sys::api::rules::ffi::TrafficSignType::kPoliceStation => TrafficSignType::PoliceStation,
maliput_sys::api::rules::ffi::TrafficSignType::kTelephone => TrafficSignType::Telephone,
maliput_sys::api::rules::ffi::TrafficSignType::kFillingStation => TrafficSignType::FillingStation,
maliput_sys::api::rules::ffi::TrafficSignType::kHotel => TrafficSignType::Hotel,
maliput_sys::api::rules::ffi::TrafficSignType::kInn => TrafficSignType::Inn,
maliput_sys::api::rules::ffi::TrafficSignType::kKiosk => TrafficSignType::Kiosk,
maliput_sys::api::rules::ffi::TrafficSignType::kToilet => TrafficSignType::Toilet,
maliput_sys::api::rules::ffi::TrafficSignType::kChapel => TrafficSignType::Chapel,
maliput_sys::api::rules::ffi::TrafficSignType::kTouristInfo => TrafficSignType::TouristInfo,
maliput_sys::api::rules::ffi::TrafficSignType::kRepairService => TrafficSignType::RepairService,
maliput_sys::api::rules::ffi::TrafficSignType::kPedestrianUnderpass => TrafficSignType::PedestrianUnderpass,
maliput_sys::api::rules::ffi::TrafficSignType::kPedestrianBridge => TrafficSignType::PedestrianBridge,
maliput_sys::api::rules::ffi::TrafficSignType::kCamperPlace => TrafficSignType::CamperPlace,
maliput_sys::api::rules::ffi::TrafficSignType::kAdvisorySpeedLimitBegin => {
TrafficSignType::AdvisorySpeedLimitBegin
}
maliput_sys::api::rules::ffi::TrafficSignType::kAdvisorySpeedLimitEnd => TrafficSignType::AdvisorySpeedLimitEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kPlaceName => TrafficSignType::PlaceName,
maliput_sys::api::rules::ffi::TrafficSignType::kTouristAttraction => TrafficSignType::TouristAttraction,
maliput_sys::api::rules::ffi::TrafficSignType::kTouristRoute => TrafficSignType::TouristRoute,
maliput_sys::api::rules::ffi::TrafficSignType::kTouristArea => TrafficSignType::TouristArea,
maliput_sys::api::rules::ffi::TrafficSignType::kShoulderNotPassableMotorVehicles => {
TrafficSignType::ShoulderNotPassableMotorVehicles
}
maliput_sys::api::rules::ffi::TrafficSignType::kShoulderUnsafeTrucksTractors => {
TrafficSignType::ShoulderUnsafeTrucksTractors
}
maliput_sys::api::rules::ffi::TrafficSignType::kTollBegin => TrafficSignType::TollBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kTollEnd => TrafficSignType::TollEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kTollRoad => TrafficSignType::TollRoad,
maliput_sys::api::rules::ffi::TrafficSignType::kCustoms => TrafficSignType::Customs,
maliput_sys::api::rules::ffi::TrafficSignType::kInternationalBorderInfo => {
TrafficSignType::InternationalBorderInfo
}
maliput_sys::api::rules::ffi::TrafficSignType::kStreetlightRedBand => TrafficSignType::StreetlightRedBand,
maliput_sys::api::rules::ffi::TrafficSignType::kFederalHighwayRouteNumber => {
TrafficSignType::FederalHighwayRouteNumber
}
maliput_sys::api::rules::ffi::TrafficSignType::kHighwayRouteNumber => TrafficSignType::HighwayRouteNumber,
maliput_sys::api::rules::ffi::TrafficSignType::kHighwayInterchangeNumber => {
TrafficSignType::HighwayInterchangeNumber
}
maliput_sys::api::rules::ffi::TrafficSignType::kEuropeanRouteNumber => TrafficSignType::EuropeanRouteNumber,
maliput_sys::api::rules::ffi::TrafficSignType::kFederalHighwayDirectionLeft => {
TrafficSignType::FederalHighwayDirectionLeft
}
maliput_sys::api::rules::ffi::TrafficSignType::kFederalHighwayDirectionRight => {
TrafficSignType::FederalHighwayDirectionRight
}
maliput_sys::api::rules::ffi::TrafficSignType::kPrimaryRoadDirectionLeft => {
TrafficSignType::PrimaryRoadDirectionLeft
}
maliput_sys::api::rules::ffi::TrafficSignType::kPrimaryRoadDirectionRight => {
TrafficSignType::PrimaryRoadDirectionRight
}
maliput_sys::api::rules::ffi::TrafficSignType::kSecondaryRoadDirectionLeft => {
TrafficSignType::SecondaryRoadDirectionLeft
}
maliput_sys::api::rules::ffi::TrafficSignType::kSecondaryRoadDirectionRight => {
TrafficSignType::SecondaryRoadDirectionRight
}
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionDesignatedActorsLeft => {
TrafficSignType::DirectionDesignatedActorsLeft
}
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionDesignatedActorsRight => {
TrafficSignType::DirectionDesignatedActorsRight
}
maliput_sys::api::rules::ffi::TrafficSignType::kRoutingDesignatedActors => {
TrafficSignType::RoutingDesignatedActors
}
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionToHighwayLeft => {
TrafficSignType::DirectionToHighwayLeft
}
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionToHighwayRight => {
TrafficSignType::DirectionToHighwayRight
}
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionToLocalDestinationLeft => {
TrafficSignType::DirectionToLocalDestinationLeft
}
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionToLocalDestinationRight => {
TrafficSignType::DirectionToLocalDestinationRight
}
maliput_sys::api::rules::ffi::TrafficSignType::kConsolidatedDirections => {
TrafficSignType::ConsolidatedDirections
}
maliput_sys::api::rules::ffi::TrafficSignType::kStreetName => TrafficSignType::StreetName,
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionPreannouncement => {
TrafficSignType::DirectionPreannouncement
}
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionPreannouncementLaneConfig => {
TrafficSignType::DirectionPreannouncementLaneConfig
}
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionPreannouncementHighwayEntries => {
TrafficSignType::DirectionPreannouncementHighwayEntries
}
maliput_sys::api::rules::ffi::TrafficSignType::kHighwayAnnouncement => TrafficSignType::HighwayAnnouncement,
maliput_sys::api::rules::ffi::TrafficSignType::kOtherRoadAnnouncement => TrafficSignType::OtherRoadAnnouncement,
maliput_sys::api::rules::ffi::TrafficSignType::kHighwayAnnouncementTruckStop => {
TrafficSignType::HighwayAnnouncementTruckStop
}
maliput_sys::api::rules::ffi::TrafficSignType::kHighwayPreannouncementDirections => {
TrafficSignType::HighwayPreannouncementDirections
}
maliput_sys::api::rules::ffi::TrafficSignType::kPoleExit => TrafficSignType::PoleExit,
maliput_sys::api::rules::ffi::TrafficSignType::kHighwayDistanceBoard => TrafficSignType::HighwayDistanceBoard,
maliput_sys::api::rules::ffi::TrafficSignType::kDetourLeft => TrafficSignType::DetourLeft,
maliput_sys::api::rules::ffi::TrafficSignType::kDetourRight => TrafficSignType::DetourRight,
maliput_sys::api::rules::ffi::TrafficSignType::kNumberedDetour => TrafficSignType::NumberedDetour,
maliput_sys::api::rules::ffi::TrafficSignType::kDetourBegin => TrafficSignType::DetourBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kDetourEnd => TrafficSignType::DetourEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kDetourRoutingBoard => TrafficSignType::DetourRoutingBoard,
maliput_sys::api::rules::ffi::TrafficSignType::kOptionalDetour => TrafficSignType::OptionalDetour,
maliput_sys::api::rules::ffi::TrafficSignType::kOptionalDetourRouting => TrafficSignType::OptionalDetourRouting,
maliput_sys::api::rules::ffi::TrafficSignType::kRouteRecommendation => TrafficSignType::RouteRecommendation,
maliput_sys::api::rules::ffi::TrafficSignType::kRouteRecommendationEnd => {
TrafficSignType::RouteRecommendationEnd
}
maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceLaneTransitionLeft => {
TrafficSignType::AnnounceLaneTransitionLeft
}
maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceLaneTransitionRight => {
TrafficSignType::AnnounceLaneTransitionRight
}
maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceRightLaneEnd => TrafficSignType::AnnounceRightLaneEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceLeftLaneEnd => TrafficSignType::AnnounceLeftLaneEnd,
maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceRightLaneBegin => {
TrafficSignType::AnnounceRightLaneBegin
}
maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceLeftLaneBegin => TrafficSignType::AnnounceLeftLaneBegin,
maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceLaneConsolidation => {
TrafficSignType::AnnounceLaneConsolidation
}
maliput_sys::api::rules::ffi::TrafficSignType::kDetourCityBlock => TrafficSignType::DetourCityBlock,
maliput_sys::api::rules::ffi::TrafficSignType::kGate => TrafficSignType::Gate,
maliput_sys::api::rules::ffi::TrafficSignType::kPoleWarning => TrafficSignType::PoleWarning,
maliput_sys::api::rules::ffi::TrafficSignType::kTrafficCone => TrafficSignType::TrafficCone,
maliput_sys::api::rules::ffi::TrafficSignType::kMobileLaneClosure => TrafficSignType::MobileLaneClosure,
maliput_sys::api::rules::ffi::TrafficSignType::kReflectorPost => TrafficSignType::ReflectorPost,
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionalBoardWarning => {
TrafficSignType::DirectionalBoardWarning
}
maliput_sys::api::rules::ffi::TrafficSignType::kGuidingPlate => TrafficSignType::GuidingPlate,
maliput_sys::api::rules::ffi::TrafficSignType::kGuidingPlateWedges => TrafficSignType::GuidingPlateWedges,
maliput_sys::api::rules::ffi::TrafficSignType::kParkingHazard => TrafficSignType::ParkingHazard,
maliput_sys::api::rules::ffi::TrafficSignType::kTrafficLightGreenArrow => {
TrafficSignType::TrafficLightGreenArrow
}
maliput_sys::api::rules::ffi::TrafficSignType::kText => TrafficSignType::Text,
maliput_sys::api::rules::ffi::TrafficSignType::kSpace => TrafficSignType::Space,
maliput_sys::api::rules::ffi::TrafficSignType::kTime => TrafficSignType::Time,
maliput_sys::api::rules::ffi::TrafficSignType::kArrow => TrafficSignType::Arrow,
maliput_sys::api::rules::ffi::TrafficSignType::kConstrainedTo => TrafficSignType::ConstrainedTo,
maliput_sys::api::rules::ffi::TrafficSignType::kExcept => TrafficSignType::Except,
maliput_sys::api::rules::ffi::TrafficSignType::kValidForDistance => TrafficSignType::ValidForDistance,
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadBottomLeftFourWay => {
TrafficSignType::PriorityRoadBottomLeftFourWay
}
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadTopLeftFourWay => {
TrafficSignType::PriorityRoadTopLeftFourWay
}
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadBottomLeftThreeWayStraight => {
TrafficSignType::PriorityRoadBottomLeftThreeWayStraight
}
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadBottomLeftThreeWaySideways => {
TrafficSignType::PriorityRoadBottomLeftThreeWaySideways
}
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadTopLeftThreeWayStraight => {
TrafficSignType::PriorityRoadTopLeftThreeWayStraight
}
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadBottomRightFourWay => {
TrafficSignType::PriorityRoadBottomRightFourWay
}
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadTopRightFourWay => {
TrafficSignType::PriorityRoadTopRightFourWay
}
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadBottomRightThreeWayStraight => {
TrafficSignType::PriorityRoadBottomRightThreeWayStraight
}
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadBottomRightThreeWaySideway => {
TrafficSignType::PriorityRoadBottomRightThreeWaySideway
}
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadTopRightThreeWayStraight => {
TrafficSignType::PriorityRoadTopRightThreeWayStraight
}
maliput_sys::api::rules::ffi::TrafficSignType::kValidInDistance => TrafficSignType::ValidInDistance,
maliput_sys::api::rules::ffi::TrafficSignType::kStopIn => TrafficSignType::StopIn,
maliput_sys::api::rules::ffi::TrafficSignType::kLeftArrow => TrafficSignType::LeftArrow,
maliput_sys::api::rules::ffi::TrafficSignType::kLeftBendArrow => TrafficSignType::LeftBendArrow,
maliput_sys::api::rules::ffi::TrafficSignType::kRightArrow => TrafficSignType::RightArrow,
maliput_sys::api::rules::ffi::TrafficSignType::kRightBendArrow => TrafficSignType::RightBendArrow,
maliput_sys::api::rules::ffi::TrafficSignType::kAccident => TrafficSignType::Accident,
maliput_sys::api::rules::ffi::TrafficSignType::kSnow => TrafficSignType::Snow,
maliput_sys::api::rules::ffi::TrafficSignType::kFog => TrafficSignType::Fog,
maliput_sys::api::rules::ffi::TrafficSignType::kRollingHighwayInformation => {
TrafficSignType::RollingHighwayInformation
}
maliput_sys::api::rules::ffi::TrafficSignType::kServices => TrafficSignType::Services,
maliput_sys::api::rules::ffi::TrafficSignType::kTimeRange => TrafficSignType::TimeRange,
maliput_sys::api::rules::ffi::TrafficSignType::kParkingDiscTimeRestriction => {
TrafficSignType::ParkingDiscTimeRestriction
}
maliput_sys::api::rules::ffi::TrafficSignType::kWeight => TrafficSignType::Weight,
maliput_sys::api::rules::ffi::TrafficSignType::kWet => TrafficSignType::Wet,
maliput_sys::api::rules::ffi::TrafficSignType::kParkingConstraint => TrafficSignType::ParkingConstraint,
maliput_sys::api::rules::ffi::TrafficSignType::kNoWaitingSideStripes => TrafficSignType::NoWaitingSideStripes,
maliput_sys::api::rules::ffi::TrafficSignType::kRain => TrafficSignType::Rain,
maliput_sys::api::rules::ffi::TrafficSignType::kSnowRain => TrafficSignType::SnowRain,
maliput_sys::api::rules::ffi::TrafficSignType::kNight => TrafficSignType::Night,
maliput_sys::api::rules::ffi::TrafficSignType::kStop4Way => TrafficSignType::Stop4Way,
maliput_sys::api::rules::ffi::TrafficSignType::kTruck => TrafficSignType::Truck,
maliput_sys::api::rules::ffi::TrafficSignType::kTractorsMayBePassed => TrafficSignType::TractorsMayBePassed,
maliput_sys::api::rules::ffi::TrafficSignType::kHazardous => TrafficSignType::Hazardous,
maliput_sys::api::rules::ffi::TrafficSignType::kTrailer => TrafficSignType::Trailer,
maliput_sys::api::rules::ffi::TrafficSignType::kZone => TrafficSignType::Zone,
maliput_sys::api::rules::ffi::TrafficSignType::kMotorcycle => TrafficSignType::Motorcycle,
maliput_sys::api::rules::ffi::TrafficSignType::kMotorcycleAllowed => TrafficSignType::MotorcycleAllowed,
maliput_sys::api::rules::ffi::TrafficSignType::kCar => TrafficSignType::Car,
_ => TrafficSignType::Unknown,
}
}
fn traffic_sign_type_to_cpp(sign_type: &TrafficSignType) -> maliput_sys::api::rules::ffi::TrafficSignType {
match sign_type {
TrafficSignType::None => maliput_sys::api::rules::ffi::TrafficSignType::kNone,
TrafficSignType::Other => maliput_sys::api::rules::ffi::TrafficSignType::kOther,
TrafficSignType::Stop => maliput_sys::api::rules::ffi::TrafficSignType::kStop,
TrafficSignType::Yield => maliput_sys::api::rules::ffi::TrafficSignType::kYield,
TrafficSignType::SpeedLimit => maliput_sys::api::rules::ffi::TrafficSignType::kSpeedLimit,
TrafficSignType::NoEntry => maliput_sys::api::rules::ffi::TrafficSignType::kNoEntry,
TrafficSignType::OneWay => maliput_sys::api::rules::ffi::TrafficSignType::kOneWay,
TrafficSignType::PedestrianCrossing => maliput_sys::api::rules::ffi::TrafficSignType::kPedestrianCrossing,
TrafficSignType::NoLeftTurn => maliput_sys::api::rules::ffi::TrafficSignType::kNoLeftTurn,
TrafficSignType::NoRightTurn => maliput_sys::api::rules::ffi::TrafficSignType::kNoRightTurn,
TrafficSignType::NoUTurn => maliput_sys::api::rules::ffi::TrafficSignType::kNoUTurn,
TrafficSignType::SchoolZone => maliput_sys::api::rules::ffi::TrafficSignType::kSchoolZone,
TrafficSignType::Construction => maliput_sys::api::rules::ffi::TrafficSignType::kConstruction,
TrafficSignType::RailroadCrossing => maliput_sys::api::rules::ffi::TrafficSignType::kRailroadCrossing,
TrafficSignType::NoOvertaking => maliput_sys::api::rules::ffi::TrafficSignType::kNoOvertaking,
TrafficSignType::AllWay => maliput_sys::api::rules::ffi::TrafficSignType::kAllWay,
TrafficSignType::NoUTurnLeft => maliput_sys::api::rules::ffi::TrafficSignType::kNoUTurnLeft,
TrafficSignType::NoUTurnRight => maliput_sys::api::rules::ffi::TrafficSignType::kNoUTurnRight,
TrafficSignType::StopLine => maliput_sys::api::rules::ffi::TrafficSignType::kStopLine,
TrafficSignType::Crosswalk => maliput_sys::api::rules::ffi::TrafficSignType::kCrosswalk,
TrafficSignType::DangerSpot => maliput_sys::api::rules::ffi::TrafficSignType::kDangerSpot,
TrafficSignType::ZebraCrossing => maliput_sys::api::rules::ffi::TrafficSignType::kZebraCrossing,
TrafficSignType::Flight => maliput_sys::api::rules::ffi::TrafficSignType::kFlight,
TrafficSignType::Cattle => maliput_sys::api::rules::ffi::TrafficSignType::kCattle,
TrafficSignType::HorseRiders => maliput_sys::api::rules::ffi::TrafficSignType::kHorseRiders,
TrafficSignType::Amphibians => maliput_sys::api::rules::ffi::TrafficSignType::kAmphibians,
TrafficSignType::FallingRocks => maliput_sys::api::rules::ffi::TrafficSignType::kFallingRocks,
TrafficSignType::SnowOrIce => maliput_sys::api::rules::ffi::TrafficSignType::kSnowOrIce,
TrafficSignType::LooseGravel => maliput_sys::api::rules::ffi::TrafficSignType::kLooseGravel,
TrafficSignType::Waterside => maliput_sys::api::rules::ffi::TrafficSignType::kWaterside,
TrafficSignType::Clearance => maliput_sys::api::rules::ffi::TrafficSignType::kClearance,
TrafficSignType::MovableBridge => maliput_sys::api::rules::ffi::TrafficSignType::kMovableBridge,
TrafficSignType::RightBeforeLeftNextIntersection => {
maliput_sys::api::rules::ffi::TrafficSignType::kRightBeforeLeftNextIntersection
}
TrafficSignType::TurnLeft => maliput_sys::api::rules::ffi::TrafficSignType::kTurnLeft,
TrafficSignType::TurnRight => maliput_sys::api::rules::ffi::TrafficSignType::kTurnRight,
TrafficSignType::DoubleTurnLeft => maliput_sys::api::rules::ffi::TrafficSignType::kDoubleTurnLeft,
TrafficSignType::DoubleTurnRight => maliput_sys::api::rules::ffi::TrafficSignType::kDoubleTurnRight,
TrafficSignType::HillDownwards => maliput_sys::api::rules::ffi::TrafficSignType::kHillDownwards,
TrafficSignType::HillUpwards => maliput_sys::api::rules::ffi::TrafficSignType::kHillUpwards,
TrafficSignType::UnevenRoad => maliput_sys::api::rules::ffi::TrafficSignType::kUnevenRoad,
TrafficSignType::RoadSlipperyWetOrDirty => {
maliput_sys::api::rules::ffi::TrafficSignType::kRoadSlipperyWetOrDirty
}
TrafficSignType::SideWinds => maliput_sys::api::rules::ffi::TrafficSignType::kSideWinds,
TrafficSignType::RoadNarrowing => maliput_sys::api::rules::ffi::TrafficSignType::kRoadNarrowing,
TrafficSignType::RoadNarrowingRight => maliput_sys::api::rules::ffi::TrafficSignType::kRoadNarrowingRight,
TrafficSignType::RoadNarrowingLeft => maliput_sys::api::rules::ffi::TrafficSignType::kRoadNarrowingLeft,
TrafficSignType::RoadWorks => maliput_sys::api::rules::ffi::TrafficSignType::kRoadWorks,
TrafficSignType::TrafficQueues => maliput_sys::api::rules::ffi::TrafficSignType::kTrafficQueues,
TrafficSignType::TwoWayTraffic => maliput_sys::api::rules::ffi::TrafficSignType::kTwoWayTraffic,
TrafficSignType::AttentionTrafficLight => maliput_sys::api::rules::ffi::TrafficSignType::kAttentionTrafficLight,
TrafficSignType::Pedestrians => maliput_sys::api::rules::ffi::TrafficSignType::kPedestrians,
TrafficSignType::ChildrenCrossing => maliput_sys::api::rules::ffi::TrafficSignType::kChildrenCrossing,
TrafficSignType::CycleRoute => maliput_sys::api::rules::ffi::TrafficSignType::kCycleRoute,
TrafficSignType::DeerCrossing => maliput_sys::api::rules::ffi::TrafficSignType::kDeerCrossing,
TrafficSignType::UngatedLevelCrossing => maliput_sys::api::rules::ffi::TrafficSignType::kUngatedLevelCrossing,
TrafficSignType::LevelCrossingMarker => maliput_sys::api::rules::ffi::TrafficSignType::kLevelCrossingMarker,
TrafficSignType::RailwayTrafficPriority => {
maliput_sys::api::rules::ffi::TrafficSignType::kRailwayTrafficPriority
}
TrafficSignType::GiveWay => maliput_sys::api::rules::ffi::TrafficSignType::kGiveWay,
TrafficSignType::PriorityToOppositeDirection => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityToOppositeDirection
}
TrafficSignType::PriorityToOppositeDirectionUpsideDown => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityToOppositeDirectionUpsideDown
}
TrafficSignType::PrescribedLeftTurn => maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedLeftTurn,
TrafficSignType::PrescribedRightTurn => maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedRightTurn,
TrafficSignType::PrescribedStraight => maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedStraight,
TrafficSignType::PrescribedRightWay => maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedRightWay,
TrafficSignType::PrescribedLeftWay => maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedLeftWay,
TrafficSignType::PrescribedRightTurnAndStraight => {
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedRightTurnAndStraight
}
TrafficSignType::PrescribedLeftTurnAndStraight => {
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedLeftTurnAndStraight
}
TrafficSignType::PrescribedLeftTurnAndRightTurn => {
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedLeftTurnAndRightTurn
}
TrafficSignType::PrescribedLeftTurnRightTurnAndStraight => {
maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedLeftTurnRightTurnAndStraight
}
TrafficSignType::Roundabout => maliput_sys::api::rules::ffi::TrafficSignType::kRoundabout,
TrafficSignType::OnewayLeft => maliput_sys::api::rules::ffi::TrafficSignType::kOnewayLeft,
TrafficSignType::OnewayRight => maliput_sys::api::rules::ffi::TrafficSignType::kOnewayRight,
TrafficSignType::PassLeft => maliput_sys::api::rules::ffi::TrafficSignType::kPassLeft,
TrafficSignType::PassRight => maliput_sys::api::rules::ffi::TrafficSignType::kPassRight,
TrafficSignType::SideLaneOpenForTraffic => {
maliput_sys::api::rules::ffi::TrafficSignType::kSideLaneOpenForTraffic
}
TrafficSignType::SideLaneClosedForTraffic => {
maliput_sys::api::rules::ffi::TrafficSignType::kSideLaneClosedForTraffic
}
TrafficSignType::SideLaneClosingForTraffic => {
maliput_sys::api::rules::ffi::TrafficSignType::kSideLaneClosingForTraffic
}
TrafficSignType::BusStop => maliput_sys::api::rules::ffi::TrafficSignType::kBusStop,
TrafficSignType::TaxiStand => maliput_sys::api::rules::ffi::TrafficSignType::kTaxiStand,
TrafficSignType::BicyclesOnly => maliput_sys::api::rules::ffi::TrafficSignType::kBicyclesOnly,
TrafficSignType::HorseRidersOnly => maliput_sys::api::rules::ffi::TrafficSignType::kHorseRidersOnly,
TrafficSignType::PedestriansOnly => maliput_sys::api::rules::ffi::TrafficSignType::kPedestriansOnly,
TrafficSignType::BicyclesPedestriansSharedOnly => {
maliput_sys::api::rules::ffi::TrafficSignType::kBicyclesPedestriansSharedOnly
}
TrafficSignType::BicyclesPedestriansSeparatedLeftOnly => {
maliput_sys::api::rules::ffi::TrafficSignType::kBicyclesPedestriansSeparatedLeftOnly
}
TrafficSignType::BicyclesPedestriansSeparatedRightOnly => {
maliput_sys::api::rules::ffi::TrafficSignType::kBicyclesPedestriansSeparatedRightOnly
}
TrafficSignType::PedestrianZoneBegin => maliput_sys::api::rules::ffi::TrafficSignType::kPedestrianZoneBegin,
TrafficSignType::PedestrianZoneEnd => maliput_sys::api::rules::ffi::TrafficSignType::kPedestrianZoneEnd,
TrafficSignType::BicycleRoadBegin => maliput_sys::api::rules::ffi::TrafficSignType::kBicycleRoadBegin,
TrafficSignType::BicycleRoadEnd => maliput_sys::api::rules::ffi::TrafficSignType::kBicycleRoadEnd,
TrafficSignType::BusLane => maliput_sys::api::rules::ffi::TrafficSignType::kBusLane,
TrafficSignType::BusLaneBegin => maliput_sys::api::rules::ffi::TrafficSignType::kBusLaneBegin,
TrafficSignType::BusLaneEnd => maliput_sys::api::rules::ffi::TrafficSignType::kBusLaneEnd,
TrafficSignType::AllProhibited => maliput_sys::api::rules::ffi::TrafficSignType::kAllProhibited,
TrafficSignType::MotorizedMultitrackProhibited => {
maliput_sys::api::rules::ffi::TrafficSignType::kMotorizedMultitrackProhibited
}
TrafficSignType::TrucksProhibited => maliput_sys::api::rules::ffi::TrafficSignType::kTrucksProhibited,
TrafficSignType::BicyclesProhibited => maliput_sys::api::rules::ffi::TrafficSignType::kBicyclesProhibited,
TrafficSignType::MotorcyclesProhibited => maliput_sys::api::rules::ffi::TrafficSignType::kMotorcyclesProhibited,
TrafficSignType::MopedsProhibited => maliput_sys::api::rules::ffi::TrafficSignType::kMopedsProhibited,
TrafficSignType::HorseRidersProhibited => maliput_sys::api::rules::ffi::TrafficSignType::kHorseRidersProhibited,
TrafficSignType::HorseCarriagesProhibited => {
maliput_sys::api::rules::ffi::TrafficSignType::kHorseCarriagesProhibited
}
TrafficSignType::CattleProhibited => maliput_sys::api::rules::ffi::TrafficSignType::kCattleProhibited,
TrafficSignType::BusesProhibited => maliput_sys::api::rules::ffi::TrafficSignType::kBusesProhibited,
TrafficSignType::CarsProhibited => maliput_sys::api::rules::ffi::TrafficSignType::kCarsProhibited,
TrafficSignType::CarsTrailersProhibited => {
maliput_sys::api::rules::ffi::TrafficSignType::kCarsTrailersProhibited
}
TrafficSignType::TrucksTrailersProhibited => {
maliput_sys::api::rules::ffi::TrafficSignType::kTrucksTrailersProhibited
}
TrafficSignType::TractorsProhibited => maliput_sys::api::rules::ffi::TrafficSignType::kTractorsProhibited,
TrafficSignType::PedestriansProhibited => maliput_sys::api::rules::ffi::TrafficSignType::kPedestriansProhibited,
TrafficSignType::MotorVehiclesProhibited => {
maliput_sys::api::rules::ffi::TrafficSignType::kMotorVehiclesProhibited
}
TrafficSignType::HazardousGoodsVehiclesProhibited => {
maliput_sys::api::rules::ffi::TrafficSignType::kHazardousGoodsVehiclesProhibited
}
TrafficSignType::OverWeightVehiclesProhibited => {
maliput_sys::api::rules::ffi::TrafficSignType::kOverWeightVehiclesProhibited
}
TrafficSignType::VehiclesAxleOverWeightProhibited => {
maliput_sys::api::rules::ffi::TrafficSignType::kVehiclesAxleOverWeightProhibited
}
TrafficSignType::VehiclesExcessWidthProhibited => {
maliput_sys::api::rules::ffi::TrafficSignType::kVehiclesExcessWidthProhibited
}
TrafficSignType::VehiclesExcessHeightProhibited => {
maliput_sys::api::rules::ffi::TrafficSignType::kVehiclesExcessHeightProhibited
}
TrafficSignType::VehiclesExcessLengthProhibited => {
maliput_sys::api::rules::ffi::TrafficSignType::kVehiclesExcessLengthProhibited
}
TrafficSignType::DoNotEnter => maliput_sys::api::rules::ffi::TrafficSignType::kDoNotEnter,
TrafficSignType::SnowChainsRequired => maliput_sys::api::rules::ffi::TrafficSignType::kSnowChainsRequired,
TrafficSignType::WaterPollutantVehiclesProhibited => {
maliput_sys::api::rules::ffi::TrafficSignType::kWaterPollutantVehiclesProhibited
}
TrafficSignType::EnvironmentalZoneBegin => {
maliput_sys::api::rules::ffi::TrafficSignType::kEnvironmentalZoneBegin
}
TrafficSignType::EnvironmentalZoneEnd => maliput_sys::api::rules::ffi::TrafficSignType::kEnvironmentalZoneEnd,
TrafficSignType::PrescribedUTurnLeft => maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedUTurnLeft,
TrafficSignType::PrescribedUTurnRight => maliput_sys::api::rules::ffi::TrafficSignType::kPrescribedUTurnRight,
TrafficSignType::MinimumDistanceForTrucks => {
maliput_sys::api::rules::ffi::TrafficSignType::kMinimumDistanceForTrucks
}
TrafficSignType::SpeedLimitBegin => maliput_sys::api::rules::ffi::TrafficSignType::kSpeedLimitBegin,
TrafficSignType::SpeedLimitZoneBegin => maliput_sys::api::rules::ffi::TrafficSignType::kSpeedLimitZoneBegin,
TrafficSignType::SpeedLimitZoneEnd => maliput_sys::api::rules::ffi::TrafficSignType::kSpeedLimitZoneEnd,
TrafficSignType::MinimumSpeedBegin => maliput_sys::api::rules::ffi::TrafficSignType::kMinimumSpeedBegin,
TrafficSignType::OvertakingBanBegin => maliput_sys::api::rules::ffi::TrafficSignType::kOvertakingBanBegin,
TrafficSignType::OvertakingBanForTrucksBegin => {
maliput_sys::api::rules::ffi::TrafficSignType::kOvertakingBanForTrucksBegin
}
TrafficSignType::SpeedLimitEnd => maliput_sys::api::rules::ffi::TrafficSignType::kSpeedLimitEnd,
TrafficSignType::MinimumSpeedEnd => maliput_sys::api::rules::ffi::TrafficSignType::kMinimumSpeedEnd,
TrafficSignType::OvertakingBanEnd => maliput_sys::api::rules::ffi::TrafficSignType::kOvertakingBanEnd,
TrafficSignType::OvertakingBanForTrucksEnd => {
maliput_sys::api::rules::ffi::TrafficSignType::kOvertakingBanForTrucksEnd
}
TrafficSignType::AllRestrictionsEnd => maliput_sys::api::rules::ffi::TrafficSignType::kAllRestrictionsEnd,
TrafficSignType::NoStopping => maliput_sys::api::rules::ffi::TrafficSignType::kNoStopping,
TrafficSignType::NoParking => maliput_sys::api::rules::ffi::TrafficSignType::kNoParking,
TrafficSignType::NoParkingZoneBegin => maliput_sys::api::rules::ffi::TrafficSignType::kNoParkingZoneBegin,
TrafficSignType::NoParkingZoneEnd => maliput_sys::api::rules::ffi::TrafficSignType::kNoParkingZoneEnd,
TrafficSignType::RightOfWayNextIntersection => {
maliput_sys::api::rules::ffi::TrafficSignType::kRightOfWayNextIntersection
}
TrafficSignType::RightOfWayBegin => maliput_sys::api::rules::ffi::TrafficSignType::kRightOfWayBegin,
TrafficSignType::RightOfWayEnd => maliput_sys::api::rules::ffi::TrafficSignType::kRightOfWayEnd,
TrafficSignType::PriorityOverOppositeDirection => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityOverOppositeDirection
}
TrafficSignType::PriorityOverOppositeDirectionUpsideDown => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityOverOppositeDirectionUpsideDown
}
TrafficSignType::TownBegin => maliput_sys::api::rules::ffi::TrafficSignType::kTownBegin,
TrafficSignType::TownEnd => maliput_sys::api::rules::ffi::TrafficSignType::kTownEnd,
TrafficSignType::CarParking => maliput_sys::api::rules::ffi::TrafficSignType::kCarParking,
TrafficSignType::CarParkingZoneBegin => maliput_sys::api::rules::ffi::TrafficSignType::kCarParkingZoneBegin,
TrafficSignType::CarParkingZoneEnd => maliput_sys::api::rules::ffi::TrafficSignType::kCarParkingZoneEnd,
TrafficSignType::SidewalkHalfParkingLeft => {
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkHalfParkingLeft
}
TrafficSignType::SidewalkHalfParkingRight => {
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkHalfParkingRight
}
TrafficSignType::SidewalkParkingLeft => maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkParkingLeft,
TrafficSignType::SidewalkParkingRight => maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkParkingRight,
TrafficSignType::SidewalkPerpendicularHalfParkingLeft => {
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkPerpendicularHalfParkingLeft
}
TrafficSignType::SidewalkPerpendicularHalfParkingRight => {
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkPerpendicularHalfParkingRight
}
TrafficSignType::SidewalkPerpendicularParkingLeft => {
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkPerpendicularParkingLeft
}
TrafficSignType::SidewalkPerpendicularParkingRight => {
maliput_sys::api::rules::ffi::TrafficSignType::kSidewalkPerpendicularParkingRight
}
TrafficSignType::LivingStreetBegin => maliput_sys::api::rules::ffi::TrafficSignType::kLivingStreetBegin,
TrafficSignType::LivingStreetEnd => maliput_sys::api::rules::ffi::TrafficSignType::kLivingStreetEnd,
TrafficSignType::Tunnel => maliput_sys::api::rules::ffi::TrafficSignType::kTunnel,
TrafficSignType::EmergencyStoppingLeft => maliput_sys::api::rules::ffi::TrafficSignType::kEmergencyStoppingLeft,
TrafficSignType::EmergencyStoppingRight => {
maliput_sys::api::rules::ffi::TrafficSignType::kEmergencyStoppingRight
}
TrafficSignType::HighwayBegin => maliput_sys::api::rules::ffi::TrafficSignType::kHighwayBegin,
TrafficSignType::HighwayEnd => maliput_sys::api::rules::ffi::TrafficSignType::kHighwayEnd,
TrafficSignType::ExpresswayBegin => maliput_sys::api::rules::ffi::TrafficSignType::kExpresswayBegin,
TrafficSignType::ExpresswayEnd => maliput_sys::api::rules::ffi::TrafficSignType::kExpresswayEnd,
TrafficSignType::NamedHighwayExit => maliput_sys::api::rules::ffi::TrafficSignType::kNamedHighwayExit,
TrafficSignType::NamedExpresswayExit => maliput_sys::api::rules::ffi::TrafficSignType::kNamedExpresswayExit,
TrafficSignType::NamedRoadExit => maliput_sys::api::rules::ffi::TrafficSignType::kNamedRoadExit,
TrafficSignType::HighwayExit => maliput_sys::api::rules::ffi::TrafficSignType::kHighwayExit,
TrafficSignType::ExpresswayExit => maliput_sys::api::rules::ffi::TrafficSignType::kExpresswayExit,
TrafficSignType::OnewayStreet => maliput_sys::api::rules::ffi::TrafficSignType::kOnewayStreet,
TrafficSignType::CrossingGuards => maliput_sys::api::rules::ffi::TrafficSignType::kCrossingGuards,
TrafficSignType::Deadend => maliput_sys::api::rules::ffi::TrafficSignType::kDeadend,
TrafficSignType::DeadendExcludingDesignatedActors => {
maliput_sys::api::rules::ffi::TrafficSignType::kDeadendExcludingDesignatedActors
}
TrafficSignType::FirstAidStation => maliput_sys::api::rules::ffi::TrafficSignType::kFirstAidStation,
TrafficSignType::PoliceStation => maliput_sys::api::rules::ffi::TrafficSignType::kPoliceStation,
TrafficSignType::Telephone => maliput_sys::api::rules::ffi::TrafficSignType::kTelephone,
TrafficSignType::FillingStation => maliput_sys::api::rules::ffi::TrafficSignType::kFillingStation,
TrafficSignType::Hotel => maliput_sys::api::rules::ffi::TrafficSignType::kHotel,
TrafficSignType::Inn => maliput_sys::api::rules::ffi::TrafficSignType::kInn,
TrafficSignType::Kiosk => maliput_sys::api::rules::ffi::TrafficSignType::kKiosk,
TrafficSignType::Toilet => maliput_sys::api::rules::ffi::TrafficSignType::kToilet,
TrafficSignType::Chapel => maliput_sys::api::rules::ffi::TrafficSignType::kChapel,
TrafficSignType::TouristInfo => maliput_sys::api::rules::ffi::TrafficSignType::kTouristInfo,
TrafficSignType::RepairService => maliput_sys::api::rules::ffi::TrafficSignType::kRepairService,
TrafficSignType::PedestrianUnderpass => maliput_sys::api::rules::ffi::TrafficSignType::kPedestrianUnderpass,
TrafficSignType::PedestrianBridge => maliput_sys::api::rules::ffi::TrafficSignType::kPedestrianBridge,
TrafficSignType::CamperPlace => maliput_sys::api::rules::ffi::TrafficSignType::kCamperPlace,
TrafficSignType::AdvisorySpeedLimitBegin => {
maliput_sys::api::rules::ffi::TrafficSignType::kAdvisorySpeedLimitBegin
}
TrafficSignType::AdvisorySpeedLimitEnd => maliput_sys::api::rules::ffi::TrafficSignType::kAdvisorySpeedLimitEnd,
TrafficSignType::PlaceName => maliput_sys::api::rules::ffi::TrafficSignType::kPlaceName,
TrafficSignType::TouristAttraction => maliput_sys::api::rules::ffi::TrafficSignType::kTouristAttraction,
TrafficSignType::TouristRoute => maliput_sys::api::rules::ffi::TrafficSignType::kTouristRoute,
TrafficSignType::TouristArea => maliput_sys::api::rules::ffi::TrafficSignType::kTouristArea,
TrafficSignType::ShoulderNotPassableMotorVehicles => {
maliput_sys::api::rules::ffi::TrafficSignType::kShoulderNotPassableMotorVehicles
}
TrafficSignType::ShoulderUnsafeTrucksTractors => {
maliput_sys::api::rules::ffi::TrafficSignType::kShoulderUnsafeTrucksTractors
}
TrafficSignType::TollBegin => maliput_sys::api::rules::ffi::TrafficSignType::kTollBegin,
TrafficSignType::TollEnd => maliput_sys::api::rules::ffi::TrafficSignType::kTollEnd,
TrafficSignType::TollRoad => maliput_sys::api::rules::ffi::TrafficSignType::kTollRoad,
TrafficSignType::Customs => maliput_sys::api::rules::ffi::TrafficSignType::kCustoms,
TrafficSignType::InternationalBorderInfo => {
maliput_sys::api::rules::ffi::TrafficSignType::kInternationalBorderInfo
}
TrafficSignType::StreetlightRedBand => maliput_sys::api::rules::ffi::TrafficSignType::kStreetlightRedBand,
TrafficSignType::FederalHighwayRouteNumber => {
maliput_sys::api::rules::ffi::TrafficSignType::kFederalHighwayRouteNumber
}
TrafficSignType::HighwayRouteNumber => maliput_sys::api::rules::ffi::TrafficSignType::kHighwayRouteNumber,
TrafficSignType::HighwayInterchangeNumber => {
maliput_sys::api::rules::ffi::TrafficSignType::kHighwayInterchangeNumber
}
TrafficSignType::EuropeanRouteNumber => maliput_sys::api::rules::ffi::TrafficSignType::kEuropeanRouteNumber,
TrafficSignType::FederalHighwayDirectionLeft => {
maliput_sys::api::rules::ffi::TrafficSignType::kFederalHighwayDirectionLeft
}
TrafficSignType::FederalHighwayDirectionRight => {
maliput_sys::api::rules::ffi::TrafficSignType::kFederalHighwayDirectionRight
}
TrafficSignType::PrimaryRoadDirectionLeft => {
maliput_sys::api::rules::ffi::TrafficSignType::kPrimaryRoadDirectionLeft
}
TrafficSignType::PrimaryRoadDirectionRight => {
maliput_sys::api::rules::ffi::TrafficSignType::kPrimaryRoadDirectionRight
}
TrafficSignType::SecondaryRoadDirectionLeft => {
maliput_sys::api::rules::ffi::TrafficSignType::kSecondaryRoadDirectionLeft
}
TrafficSignType::SecondaryRoadDirectionRight => {
maliput_sys::api::rules::ffi::TrafficSignType::kSecondaryRoadDirectionRight
}
TrafficSignType::DirectionDesignatedActorsLeft => {
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionDesignatedActorsLeft
}
TrafficSignType::DirectionDesignatedActorsRight => {
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionDesignatedActorsRight
}
TrafficSignType::RoutingDesignatedActors => {
maliput_sys::api::rules::ffi::TrafficSignType::kRoutingDesignatedActors
}
TrafficSignType::DirectionToHighwayLeft => {
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionToHighwayLeft
}
TrafficSignType::DirectionToHighwayRight => {
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionToHighwayRight
}
TrafficSignType::DirectionToLocalDestinationLeft => {
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionToLocalDestinationLeft
}
TrafficSignType::DirectionToLocalDestinationRight => {
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionToLocalDestinationRight
}
TrafficSignType::ConsolidatedDirections => {
maliput_sys::api::rules::ffi::TrafficSignType::kConsolidatedDirections
}
TrafficSignType::StreetName => maliput_sys::api::rules::ffi::TrafficSignType::kStreetName,
TrafficSignType::DirectionPreannouncement => {
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionPreannouncement
}
TrafficSignType::DirectionPreannouncementLaneConfig => {
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionPreannouncementLaneConfig
}
TrafficSignType::DirectionPreannouncementHighwayEntries => {
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionPreannouncementHighwayEntries
}
TrafficSignType::HighwayAnnouncement => maliput_sys::api::rules::ffi::TrafficSignType::kHighwayAnnouncement,
TrafficSignType::OtherRoadAnnouncement => maliput_sys::api::rules::ffi::TrafficSignType::kOtherRoadAnnouncement,
TrafficSignType::HighwayAnnouncementTruckStop => {
maliput_sys::api::rules::ffi::TrafficSignType::kHighwayAnnouncementTruckStop
}
TrafficSignType::HighwayPreannouncementDirections => {
maliput_sys::api::rules::ffi::TrafficSignType::kHighwayPreannouncementDirections
}
TrafficSignType::PoleExit => maliput_sys::api::rules::ffi::TrafficSignType::kPoleExit,
TrafficSignType::HighwayDistanceBoard => maliput_sys::api::rules::ffi::TrafficSignType::kHighwayDistanceBoard,
TrafficSignType::DetourLeft => maliput_sys::api::rules::ffi::TrafficSignType::kDetourLeft,
TrafficSignType::DetourRight => maliput_sys::api::rules::ffi::TrafficSignType::kDetourRight,
TrafficSignType::NumberedDetour => maliput_sys::api::rules::ffi::TrafficSignType::kNumberedDetour,
TrafficSignType::DetourBegin => maliput_sys::api::rules::ffi::TrafficSignType::kDetourBegin,
TrafficSignType::DetourEnd => maliput_sys::api::rules::ffi::TrafficSignType::kDetourEnd,
TrafficSignType::DetourRoutingBoard => maliput_sys::api::rules::ffi::TrafficSignType::kDetourRoutingBoard,
TrafficSignType::OptionalDetour => maliput_sys::api::rules::ffi::TrafficSignType::kOptionalDetour,
TrafficSignType::OptionalDetourRouting => maliput_sys::api::rules::ffi::TrafficSignType::kOptionalDetourRouting,
TrafficSignType::RouteRecommendation => maliput_sys::api::rules::ffi::TrafficSignType::kRouteRecommendation,
TrafficSignType::RouteRecommendationEnd => {
maliput_sys::api::rules::ffi::TrafficSignType::kRouteRecommendationEnd
}
TrafficSignType::AnnounceLaneTransitionLeft => {
maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceLaneTransitionLeft
}
TrafficSignType::AnnounceLaneTransitionRight => {
maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceLaneTransitionRight
}
TrafficSignType::AnnounceRightLaneEnd => maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceRightLaneEnd,
TrafficSignType::AnnounceLeftLaneEnd => maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceLeftLaneEnd,
TrafficSignType::AnnounceRightLaneBegin => {
maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceRightLaneBegin
}
TrafficSignType::AnnounceLeftLaneBegin => maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceLeftLaneBegin,
TrafficSignType::AnnounceLaneConsolidation => {
maliput_sys::api::rules::ffi::TrafficSignType::kAnnounceLaneConsolidation
}
TrafficSignType::DetourCityBlock => maliput_sys::api::rules::ffi::TrafficSignType::kDetourCityBlock,
TrafficSignType::Gate => maliput_sys::api::rules::ffi::TrafficSignType::kGate,
TrafficSignType::PoleWarning => maliput_sys::api::rules::ffi::TrafficSignType::kPoleWarning,
TrafficSignType::TrafficCone => maliput_sys::api::rules::ffi::TrafficSignType::kTrafficCone,
TrafficSignType::MobileLaneClosure => maliput_sys::api::rules::ffi::TrafficSignType::kMobileLaneClosure,
TrafficSignType::ReflectorPost => maliput_sys::api::rules::ffi::TrafficSignType::kReflectorPost,
TrafficSignType::DirectionalBoardWarning => {
maliput_sys::api::rules::ffi::TrafficSignType::kDirectionalBoardWarning
}
TrafficSignType::GuidingPlate => maliput_sys::api::rules::ffi::TrafficSignType::kGuidingPlate,
TrafficSignType::GuidingPlateWedges => maliput_sys::api::rules::ffi::TrafficSignType::kGuidingPlateWedges,
TrafficSignType::ParkingHazard => maliput_sys::api::rules::ffi::TrafficSignType::kParkingHazard,
TrafficSignType::TrafficLightGreenArrow => {
maliput_sys::api::rules::ffi::TrafficSignType::kTrafficLightGreenArrow
}
TrafficSignType::Text => maliput_sys::api::rules::ffi::TrafficSignType::kText,
TrafficSignType::Space => maliput_sys::api::rules::ffi::TrafficSignType::kSpace,
TrafficSignType::Time => maliput_sys::api::rules::ffi::TrafficSignType::kTime,
TrafficSignType::Arrow => maliput_sys::api::rules::ffi::TrafficSignType::kArrow,
TrafficSignType::ConstrainedTo => maliput_sys::api::rules::ffi::TrafficSignType::kConstrainedTo,
TrafficSignType::Except => maliput_sys::api::rules::ffi::TrafficSignType::kExcept,
TrafficSignType::ValidForDistance => maliput_sys::api::rules::ffi::TrafficSignType::kValidForDistance,
TrafficSignType::PriorityRoadBottomLeftFourWay => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadBottomLeftFourWay
}
TrafficSignType::PriorityRoadTopLeftFourWay => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadTopLeftFourWay
}
TrafficSignType::PriorityRoadBottomLeftThreeWayStraight => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadBottomLeftThreeWayStraight
}
TrafficSignType::PriorityRoadBottomLeftThreeWaySideways => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadBottomLeftThreeWaySideways
}
TrafficSignType::PriorityRoadTopLeftThreeWayStraight => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadTopLeftThreeWayStraight
}
TrafficSignType::PriorityRoadBottomRightFourWay => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadBottomRightFourWay
}
TrafficSignType::PriorityRoadTopRightFourWay => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadTopRightFourWay
}
TrafficSignType::PriorityRoadBottomRightThreeWayStraight => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadBottomRightThreeWayStraight
}
TrafficSignType::PriorityRoadBottomRightThreeWaySideway => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadBottomRightThreeWaySideway
}
TrafficSignType::PriorityRoadTopRightThreeWayStraight => {
maliput_sys::api::rules::ffi::TrafficSignType::kPriorityRoadTopRightThreeWayStraight
}
TrafficSignType::ValidInDistance => maliput_sys::api::rules::ffi::TrafficSignType::kValidInDistance,
TrafficSignType::StopIn => maliput_sys::api::rules::ffi::TrafficSignType::kStopIn,
TrafficSignType::LeftArrow => maliput_sys::api::rules::ffi::TrafficSignType::kLeftArrow,
TrafficSignType::LeftBendArrow => maliput_sys::api::rules::ffi::TrafficSignType::kLeftBendArrow,
TrafficSignType::RightArrow => maliput_sys::api::rules::ffi::TrafficSignType::kRightArrow,
TrafficSignType::RightBendArrow => maliput_sys::api::rules::ffi::TrafficSignType::kRightBendArrow,
TrafficSignType::Accident => maliput_sys::api::rules::ffi::TrafficSignType::kAccident,
TrafficSignType::Snow => maliput_sys::api::rules::ffi::TrafficSignType::kSnow,
TrafficSignType::Fog => maliput_sys::api::rules::ffi::TrafficSignType::kFog,
TrafficSignType::RollingHighwayInformation => {
maliput_sys::api::rules::ffi::TrafficSignType::kRollingHighwayInformation
}
TrafficSignType::Services => maliput_sys::api::rules::ffi::TrafficSignType::kServices,
TrafficSignType::TimeRange => maliput_sys::api::rules::ffi::TrafficSignType::kTimeRange,
TrafficSignType::ParkingDiscTimeRestriction => {
maliput_sys::api::rules::ffi::TrafficSignType::kParkingDiscTimeRestriction
}
TrafficSignType::Weight => maliput_sys::api::rules::ffi::TrafficSignType::kWeight,
TrafficSignType::Wet => maliput_sys::api::rules::ffi::TrafficSignType::kWet,
TrafficSignType::ParkingConstraint => maliput_sys::api::rules::ffi::TrafficSignType::kParkingConstraint,
TrafficSignType::NoWaitingSideStripes => maliput_sys::api::rules::ffi::TrafficSignType::kNoWaitingSideStripes,
TrafficSignType::Rain => maliput_sys::api::rules::ffi::TrafficSignType::kRain,
TrafficSignType::SnowRain => maliput_sys::api::rules::ffi::TrafficSignType::kSnowRain,
TrafficSignType::Night => maliput_sys::api::rules::ffi::TrafficSignType::kNight,
TrafficSignType::Stop4Way => maliput_sys::api::rules::ffi::TrafficSignType::kStop4Way,
TrafficSignType::Truck => maliput_sys::api::rules::ffi::TrafficSignType::kTruck,
TrafficSignType::TractorsMayBePassed => maliput_sys::api::rules::ffi::TrafficSignType::kTractorsMayBePassed,
TrafficSignType::Hazardous => maliput_sys::api::rules::ffi::TrafficSignType::kHazardous,
TrafficSignType::Trailer => maliput_sys::api::rules::ffi::TrafficSignType::kTrailer,
TrafficSignType::Zone => maliput_sys::api::rules::ffi::TrafficSignType::kZone,
TrafficSignType::Motorcycle => maliput_sys::api::rules::ffi::TrafficSignType::kMotorcycle,
TrafficSignType::MotorcycleAllowed => maliput_sys::api::rules::ffi::TrafficSignType::kMotorcycleAllowed,
TrafficSignType::Car => maliput_sys::api::rules::ffi::TrafficSignType::kCar,
TrafficSignType::Unknown => maliput_sys::api::rules::ffi::TrafficSignType::kUnknown,
}
}
fn traffic_sign_value_unit_from_cpp(unit: &maliput_sys::api::rules::ffi::TrafficSignValueUnit) -> TrafficSignValueUnit {
match *unit {
maliput_sys::api::rules::ffi::TrafficSignValueUnit::kMetersPerSecond => TrafficSignValueUnit::MetersPerSecond,
maliput_sys::api::rules::ffi::TrafficSignValueUnit::kKilometersPerHour => {
TrafficSignValueUnit::KilometersPerHour
}
maliput_sys::api::rules::ffi::TrafficSignValueUnit::kMilesPerHour => TrafficSignValueUnit::MilesPerHour,
maliput_sys::api::rules::ffi::TrafficSignValueUnit::kMeters => TrafficSignValueUnit::Meters,
maliput_sys::api::rules::ffi::TrafficSignValueUnit::kKilometers => TrafficSignValueUnit::Kilometers,
maliput_sys::api::rules::ffi::TrafficSignValueUnit::kFeet => TrafficSignValueUnit::Feet,
maliput_sys::api::rules::ffi::TrafficSignValueUnit::kMiles => TrafficSignValueUnit::Miles,
maliput_sys::api::rules::ffi::TrafficSignValueUnit::kPercent => TrafficSignValueUnit::Percent,
maliput_sys::api::rules::ffi::TrafficSignValueUnit::kKilograms => TrafficSignValueUnit::Kilograms,
maliput_sys::api::rules::ffi::TrafficSignValueUnit::kMetricTons => TrafficSignValueUnit::MetricTons,
_ => panic!("Invalid traffic sign value unit"),
}
}
pub struct TrafficSignBook<'a> {
pub(super) traffic_sign_book: &'a maliput_sys::api::rules::ffi::TrafficSignBook,
}
impl<'a> TrafficSignBook<'a> {
pub fn traffic_signs(&self) -> Vec<TrafficSign<'_>> {
let traffic_signs_cpp = maliput_sys::api::rules::ffi::TrafficSignBook_TrafficSigns(self.traffic_sign_book);
traffic_signs_cpp
.into_iter()
.map(|ts| TrafficSign {
traffic_sign: unsafe { ts.traffic_sign.as_ref().expect("TrafficSign pointer is null") },
})
.collect::<Vec<TrafficSign>>()
}
pub fn get_traffic_sign(&self, id: &String) -> Option<TrafficSign<'_>> {
let ptr = maliput_sys::api::rules::ffi::TrafficSignBook_GetTrafficSign(self.traffic_sign_book, id);
if ptr.is_null() {
return None;
}
Some(TrafficSign {
traffic_sign: unsafe { ptr.as_ref().expect("Unable to get underlying traffic sign pointer") },
})
}
pub fn find_by_lane(&self, lane_id: &String) -> Vec<TrafficSign<'_>> {
let traffic_signs_cpp =
maliput_sys::api::rules::ffi::TrafficSignBook_FindByLane(self.traffic_sign_book, lane_id);
traffic_signs_cpp
.into_iter()
.map(|ts| TrafficSign {
traffic_sign: unsafe { ts.traffic_sign.as_ref().expect("TrafficSign pointer is null") },
})
.collect::<Vec<TrafficSign>>()
}
pub fn find_by_type(&self, sign_type: &TrafficSignType) -> Vec<TrafficSign<'_>> {
let sign_type_ffi = traffic_sign_type_to_cpp(sign_type);
let traffic_signs_cpp =
maliput_sys::api::rules::ffi::TrafficSignBook_FindByType(self.traffic_sign_book, sign_type_ffi);
traffic_signs_cpp
.into_iter()
.map(|ts| TrafficSign {
traffic_sign: unsafe { ts.traffic_sign.as_ref().expect("TrafficSign pointer is null") },
})
.collect::<Vec<TrafficSign>>()
}
}
pub struct TrafficSign<'a> {
pub traffic_sign: &'a maliput_sys::api::rules::ffi::TrafficSign,
}
impl<'a> TrafficSign<'a> {
pub fn id(&self) -> String {
maliput_sys::api::rules::ffi::TrafficSign_id(self.traffic_sign)
}
pub fn sign_type(&self) -> TrafficSignType {
let sign_type = maliput_sys::api::rules::ffi::TrafficSign_type(self.traffic_sign);
traffic_sign_type_from_cpp(sign_type)
}
pub fn position_road_network(&self) -> super::InertialPosition {
let inertial_position = maliput_sys::api::rules::ffi::TrafficSign_position_road_network(self.traffic_sign);
super::InertialPosition { ip: inertial_position }
}
pub fn orientation_road_network(&self) -> super::Rotation {
let rotation = maliput_sys::api::rules::ffi::TrafficSign_orientation_road_network(self.traffic_sign);
super::Rotation { r: rotation }
}
pub fn message(&self) -> Option<String> {
let wrapper = maliput_sys::api::rules::ffi::TrafficSign_message(self.traffic_sign);
if wrapper.is_null() {
return None;
}
Some(wrapper.value.clone())
}
pub fn is_dynamic(&self) -> bool {
maliput_sys::api::rules::ffi::TrafficSign::is_dynamic(self.traffic_sign)
}
pub fn is_movable(&self) -> bool {
maliput_sys::api::rules::ffi::TrafficSign::is_movable(self.traffic_sign)
}
pub fn related_lanes(&self) -> Vec<String> {
maliput_sys::api::rules::ffi::TrafficSign_related_lanes(self.traffic_sign)
}
pub fn bounding_box(&self) -> crate::math::BoundingBox {
let b = maliput_sys::api::rules::ffi::TrafficSign_bounding_box(self.traffic_sign);
crate::math::BoundingBox { b }
}
pub fn value(&self) -> Option<TrafficSignValue> {
let data = maliput_sys::api::rules::ffi::TrafficSign_value(self.traffic_sign);
if !data.has_value {
return None;
}
Some(TrafficSignValue {
value: data.value,
unit: traffic_sign_value_unit_from_cpp(&data.unit),
})
}
pub fn properties(&self) -> HashMap<String, String> {
maliput_sys::api::rules::ffi::TrafficSign_properties(self.traffic_sign)
.into_iter()
.map(|p| (p.key, p.value))
.collect()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn traffic_sign_type_roundtrips_all_known_variants() {
let variants = [
TrafficSignType::None,
TrafficSignType::Other,
TrafficSignType::Stop,
TrafficSignType::Yield,
TrafficSignType::SpeedLimit,
TrafficSignType::NoEntry,
TrafficSignType::OneWay,
TrafficSignType::PedestrianCrossing,
TrafficSignType::NoLeftTurn,
TrafficSignType::NoRightTurn,
TrafficSignType::NoUTurn,
TrafficSignType::SchoolZone,
TrafficSignType::Construction,
TrafficSignType::RailroadCrossing,
TrafficSignType::NoOvertaking,
TrafficSignType::AllWay,
TrafficSignType::NoUTurnLeft,
TrafficSignType::NoUTurnRight,
TrafficSignType::StopLine,
TrafficSignType::Crosswalk,
TrafficSignType::DangerSpot,
TrafficSignType::ZebraCrossing,
TrafficSignType::Flight,
TrafficSignType::Cattle,
TrafficSignType::HorseRiders,
TrafficSignType::Amphibians,
TrafficSignType::FallingRocks,
TrafficSignType::SnowOrIce,
TrafficSignType::LooseGravel,
TrafficSignType::Waterside,
TrafficSignType::Clearance,
TrafficSignType::MovableBridge,
TrafficSignType::RightBeforeLeftNextIntersection,
TrafficSignType::TurnLeft,
TrafficSignType::TurnRight,
TrafficSignType::DoubleTurnLeft,
TrafficSignType::DoubleTurnRight,
TrafficSignType::HillDownwards,
TrafficSignType::HillUpwards,
TrafficSignType::UnevenRoad,
TrafficSignType::RoadSlipperyWetOrDirty,
TrafficSignType::SideWinds,
TrafficSignType::RoadNarrowing,
TrafficSignType::RoadNarrowingRight,
TrafficSignType::RoadNarrowingLeft,
TrafficSignType::RoadWorks,
TrafficSignType::TrafficQueues,
TrafficSignType::TwoWayTraffic,
TrafficSignType::AttentionTrafficLight,
TrafficSignType::Pedestrians,
TrafficSignType::ChildrenCrossing,
TrafficSignType::CycleRoute,
TrafficSignType::DeerCrossing,
TrafficSignType::UngatedLevelCrossing,
TrafficSignType::LevelCrossingMarker,
TrafficSignType::RailwayTrafficPriority,
TrafficSignType::GiveWay,
TrafficSignType::PriorityToOppositeDirection,
TrafficSignType::PriorityToOppositeDirectionUpsideDown,
TrafficSignType::PrescribedLeftTurn,
TrafficSignType::PrescribedRightTurn,
TrafficSignType::PrescribedStraight,
TrafficSignType::PrescribedRightWay,
TrafficSignType::PrescribedLeftWay,
TrafficSignType::PrescribedRightTurnAndStraight,
TrafficSignType::PrescribedLeftTurnAndStraight,
TrafficSignType::PrescribedLeftTurnAndRightTurn,
TrafficSignType::PrescribedLeftTurnRightTurnAndStraight,
TrafficSignType::Roundabout,
TrafficSignType::OnewayLeft,
TrafficSignType::OnewayRight,
TrafficSignType::PassLeft,
TrafficSignType::PassRight,
TrafficSignType::SideLaneOpenForTraffic,
TrafficSignType::SideLaneClosedForTraffic,
TrafficSignType::SideLaneClosingForTraffic,
TrafficSignType::BusStop,
TrafficSignType::TaxiStand,
TrafficSignType::BicyclesOnly,
TrafficSignType::HorseRidersOnly,
TrafficSignType::PedestriansOnly,
TrafficSignType::BicyclesPedestriansSharedOnly,
TrafficSignType::BicyclesPedestriansSeparatedLeftOnly,
TrafficSignType::BicyclesPedestriansSeparatedRightOnly,
TrafficSignType::PedestrianZoneBegin,
TrafficSignType::PedestrianZoneEnd,
TrafficSignType::BicycleRoadBegin,
TrafficSignType::BicycleRoadEnd,
TrafficSignType::BusLane,
TrafficSignType::BusLaneBegin,
TrafficSignType::BusLaneEnd,
TrafficSignType::AllProhibited,
TrafficSignType::MotorizedMultitrackProhibited,
TrafficSignType::TrucksProhibited,
TrafficSignType::BicyclesProhibited,
TrafficSignType::MotorcyclesProhibited,
TrafficSignType::MopedsProhibited,
TrafficSignType::HorseRidersProhibited,
TrafficSignType::HorseCarriagesProhibited,
TrafficSignType::CattleProhibited,
TrafficSignType::BusesProhibited,
TrafficSignType::CarsProhibited,
TrafficSignType::CarsTrailersProhibited,
TrafficSignType::TrucksTrailersProhibited,
TrafficSignType::TractorsProhibited,
TrafficSignType::PedestriansProhibited,
TrafficSignType::MotorVehiclesProhibited,
TrafficSignType::HazardousGoodsVehiclesProhibited,
TrafficSignType::OverWeightVehiclesProhibited,
TrafficSignType::VehiclesAxleOverWeightProhibited,
TrafficSignType::VehiclesExcessWidthProhibited,
TrafficSignType::VehiclesExcessHeightProhibited,
TrafficSignType::VehiclesExcessLengthProhibited,
TrafficSignType::DoNotEnter,
TrafficSignType::SnowChainsRequired,
TrafficSignType::WaterPollutantVehiclesProhibited,
TrafficSignType::EnvironmentalZoneBegin,
TrafficSignType::EnvironmentalZoneEnd,
TrafficSignType::PrescribedUTurnLeft,
TrafficSignType::PrescribedUTurnRight,
TrafficSignType::MinimumDistanceForTrucks,
TrafficSignType::SpeedLimitBegin,
TrafficSignType::SpeedLimitZoneBegin,
TrafficSignType::SpeedLimitZoneEnd,
TrafficSignType::MinimumSpeedBegin,
TrafficSignType::OvertakingBanBegin,
TrafficSignType::OvertakingBanForTrucksBegin,
TrafficSignType::SpeedLimitEnd,
TrafficSignType::MinimumSpeedEnd,
TrafficSignType::OvertakingBanEnd,
TrafficSignType::OvertakingBanForTrucksEnd,
TrafficSignType::AllRestrictionsEnd,
TrafficSignType::NoStopping,
TrafficSignType::NoParking,
TrafficSignType::NoParkingZoneBegin,
TrafficSignType::NoParkingZoneEnd,
TrafficSignType::RightOfWayNextIntersection,
TrafficSignType::RightOfWayBegin,
TrafficSignType::RightOfWayEnd,
TrafficSignType::PriorityOverOppositeDirection,
TrafficSignType::PriorityOverOppositeDirectionUpsideDown,
TrafficSignType::TownBegin,
TrafficSignType::TownEnd,
TrafficSignType::CarParking,
TrafficSignType::CarParkingZoneBegin,
TrafficSignType::CarParkingZoneEnd,
TrafficSignType::SidewalkHalfParkingLeft,
TrafficSignType::SidewalkHalfParkingRight,
TrafficSignType::SidewalkParkingLeft,
TrafficSignType::SidewalkParkingRight,
TrafficSignType::SidewalkPerpendicularHalfParkingLeft,
TrafficSignType::SidewalkPerpendicularHalfParkingRight,
TrafficSignType::SidewalkPerpendicularParkingLeft,
TrafficSignType::SidewalkPerpendicularParkingRight,
TrafficSignType::LivingStreetBegin,
TrafficSignType::LivingStreetEnd,
TrafficSignType::Tunnel,
TrafficSignType::EmergencyStoppingLeft,
TrafficSignType::EmergencyStoppingRight,
TrafficSignType::HighwayBegin,
TrafficSignType::HighwayEnd,
TrafficSignType::ExpresswayBegin,
TrafficSignType::ExpresswayEnd,
TrafficSignType::NamedHighwayExit,
TrafficSignType::NamedExpresswayExit,
TrafficSignType::NamedRoadExit,
TrafficSignType::HighwayExit,
TrafficSignType::ExpresswayExit,
TrafficSignType::OnewayStreet,
TrafficSignType::CrossingGuards,
TrafficSignType::Deadend,
TrafficSignType::DeadendExcludingDesignatedActors,
TrafficSignType::FirstAidStation,
TrafficSignType::PoliceStation,
TrafficSignType::Telephone,
TrafficSignType::FillingStation,
TrafficSignType::Hotel,
TrafficSignType::Inn,
TrafficSignType::Kiosk,
TrafficSignType::Toilet,
TrafficSignType::Chapel,
TrafficSignType::TouristInfo,
TrafficSignType::RepairService,
TrafficSignType::PedestrianUnderpass,
TrafficSignType::PedestrianBridge,
TrafficSignType::CamperPlace,
TrafficSignType::AdvisorySpeedLimitBegin,
TrafficSignType::AdvisorySpeedLimitEnd,
TrafficSignType::PlaceName,
TrafficSignType::TouristAttraction,
TrafficSignType::TouristRoute,
TrafficSignType::TouristArea,
TrafficSignType::ShoulderNotPassableMotorVehicles,
TrafficSignType::ShoulderUnsafeTrucksTractors,
TrafficSignType::TollBegin,
TrafficSignType::TollEnd,
TrafficSignType::TollRoad,
TrafficSignType::Customs,
TrafficSignType::InternationalBorderInfo,
TrafficSignType::StreetlightRedBand,
TrafficSignType::FederalHighwayRouteNumber,
TrafficSignType::HighwayRouteNumber,
TrafficSignType::HighwayInterchangeNumber,
TrafficSignType::EuropeanRouteNumber,
TrafficSignType::FederalHighwayDirectionLeft,
TrafficSignType::FederalHighwayDirectionRight,
TrafficSignType::PrimaryRoadDirectionLeft,
TrafficSignType::PrimaryRoadDirectionRight,
TrafficSignType::SecondaryRoadDirectionLeft,
TrafficSignType::SecondaryRoadDirectionRight,
TrafficSignType::DirectionDesignatedActorsLeft,
TrafficSignType::DirectionDesignatedActorsRight,
TrafficSignType::RoutingDesignatedActors,
TrafficSignType::DirectionToHighwayLeft,
TrafficSignType::DirectionToHighwayRight,
TrafficSignType::DirectionToLocalDestinationLeft,
TrafficSignType::DirectionToLocalDestinationRight,
TrafficSignType::ConsolidatedDirections,
TrafficSignType::StreetName,
TrafficSignType::DirectionPreannouncement,
TrafficSignType::DirectionPreannouncementLaneConfig,
TrafficSignType::DirectionPreannouncementHighwayEntries,
TrafficSignType::HighwayAnnouncement,
TrafficSignType::OtherRoadAnnouncement,
TrafficSignType::HighwayAnnouncementTruckStop,
TrafficSignType::HighwayPreannouncementDirections,
TrafficSignType::PoleExit,
TrafficSignType::HighwayDistanceBoard,
TrafficSignType::DetourLeft,
TrafficSignType::DetourRight,
TrafficSignType::NumberedDetour,
TrafficSignType::DetourBegin,
TrafficSignType::DetourEnd,
TrafficSignType::DetourRoutingBoard,
TrafficSignType::OptionalDetour,
TrafficSignType::OptionalDetourRouting,
TrafficSignType::RouteRecommendation,
TrafficSignType::RouteRecommendationEnd,
TrafficSignType::AnnounceLaneTransitionLeft,
TrafficSignType::AnnounceLaneTransitionRight,
TrafficSignType::AnnounceRightLaneEnd,
TrafficSignType::AnnounceLeftLaneEnd,
TrafficSignType::AnnounceRightLaneBegin,
TrafficSignType::AnnounceLeftLaneBegin,
TrafficSignType::AnnounceLaneConsolidation,
TrafficSignType::DetourCityBlock,
TrafficSignType::Gate,
TrafficSignType::PoleWarning,
TrafficSignType::TrafficCone,
TrafficSignType::MobileLaneClosure,
TrafficSignType::ReflectorPost,
TrafficSignType::DirectionalBoardWarning,
TrafficSignType::GuidingPlate,
TrafficSignType::GuidingPlateWedges,
TrafficSignType::ParkingHazard,
TrafficSignType::TrafficLightGreenArrow,
TrafficSignType::Text,
TrafficSignType::Space,
TrafficSignType::Time,
TrafficSignType::Arrow,
TrafficSignType::ConstrainedTo,
TrafficSignType::Except,
TrafficSignType::ValidForDistance,
TrafficSignType::PriorityRoadBottomLeftFourWay,
TrafficSignType::PriorityRoadTopLeftFourWay,
TrafficSignType::PriorityRoadBottomLeftThreeWayStraight,
TrafficSignType::PriorityRoadBottomLeftThreeWaySideways,
TrafficSignType::PriorityRoadTopLeftThreeWayStraight,
TrafficSignType::PriorityRoadBottomRightFourWay,
TrafficSignType::PriorityRoadTopRightFourWay,
TrafficSignType::PriorityRoadBottomRightThreeWayStraight,
TrafficSignType::PriorityRoadBottomRightThreeWaySideway,
TrafficSignType::PriorityRoadTopRightThreeWayStraight,
TrafficSignType::ValidInDistance,
TrafficSignType::StopIn,
TrafficSignType::LeftArrow,
TrafficSignType::LeftBendArrow,
TrafficSignType::RightArrow,
TrafficSignType::RightBendArrow,
TrafficSignType::Accident,
TrafficSignType::Snow,
TrafficSignType::Fog,
TrafficSignType::RollingHighwayInformation,
TrafficSignType::Services,
TrafficSignType::TimeRange,
TrafficSignType::ParkingDiscTimeRestriction,
TrafficSignType::Weight,
TrafficSignType::Wet,
TrafficSignType::ParkingConstraint,
TrafficSignType::NoWaitingSideStripes,
TrafficSignType::Rain,
TrafficSignType::SnowRain,
TrafficSignType::Night,
TrafficSignType::Stop4Way,
TrafficSignType::Truck,
TrafficSignType::TractorsMayBePassed,
TrafficSignType::Hazardous,
TrafficSignType::Trailer,
TrafficSignType::Zone,
TrafficSignType::Motorcycle,
TrafficSignType::MotorcycleAllowed,
TrafficSignType::Car,
TrafficSignType::Unknown,
];
for variant in variants {
let cpp = traffic_sign_type_to_cpp(&variant);
let roundtrip = traffic_sign_type_from_cpp(&cpp);
assert_eq!(roundtrip, variant);
}
}
}