maliput_sys/api/objects/
mod.rs1#[cxx::bridge(namespace = "maliput::api::objects")]
32#[allow(clippy::needless_lifetimes)] pub mod ffi {
34 struct ConstRoadObjectPtr {
37 pub road_object: *const RoadObject,
38 }
39 struct ConstOutlinePtr {
42 pub outline: *const Outline,
43 }
44 struct ConstRoadMarkingPtr {
47 pub road_marking: *const RoadMarking,
48 }
49 struct RoadMarkingValueData {
52 pub has_value: bool,
53 pub value: f64,
54 pub unit: RoadMarkingValueUnit,
55 }
56 struct OutlineCornerData {
60 pub x: f64,
61 pub y: f64,
62 pub z: f64,
63 pub has_height: bool,
64 pub height: f64,
65 }
66 struct StringPair {
69 pub key: String,
70 pub value: String,
71 }
72 struct ContinuousObjectData {
75 pub width: f64,
76 pub height: f64,
77 pub x: f64,
78 pub y: f64,
79 pub z: f64,
80 }
81
82 #[repr(i32)]
86 enum RoadObjectType {
87 kUnknown = 0,
88 kBarrier,
89 kGuardWall,
90 kGuardRail,
91 kBuilding,
92 kGantry,
93 kObstacle,
94 kPole,
95 kTrafficIsland,
96 kTree,
97 kVegetation,
98 kPylon,
99 kDelineator,
100 kBikeStatic,
101 kBusStatic,
102 kCarStatic,
103 kMotorbikeStatic,
104 kPatch,
105 kPedestrianStatic,
106 kRailing,
107 kRoadSurface,
108 kSoundBarrier,
109 kStreetLamp,
110 kTrailerStatic,
111 kTrainStatic,
112 kTramStatic,
113 kVanStatic,
114 kWind,
115 }
116
117 #[repr(i32)]
120 enum RoadMarkingValueUnit {
121 kMetersPerSecond = 0,
122 kKilometersPerHour,
123 kMilesPerHour,
124 }
125
126 unsafe extern "C++" {
127 include!("api/objects/objects.h");
128 include!("cxx_utils/error_handling.h");
129
130 #[namespace = "maliput::api"]
132 type InertialPosition = crate::api::ffi::InertialPosition;
133 #[namespace = "maliput::api"]
134 type Rotation = crate::api::ffi::Rotation;
135 #[namespace = "maliput::api::rules"]
136 type TrafficControlDeviceType = crate::api::rules::ffi::TrafficControlDeviceType;
137 #[namespace = "maliput::math"]
138 type Vector3 = crate::math::ffi::Vector3;
139 #[namespace = "maliput::math"]
140 type BoundingBox = crate::math::ffi::BoundingBox;
141 #[namespace = "maliput::api::rules"]
143 type StringWrapper = crate::api::rules::ffi::StringWrapper;
144
145 type RoadObjectType;
147
148 type RoadObjectBook;
150 fn RoadObjectBook_RoadObjects(book: &RoadObjectBook) -> UniquePtr<CxxVector<ConstRoadObjectPtr>>;
151 fn RoadObjectBook_GetRoadObject(book: &RoadObjectBook, id: &String) -> *const RoadObject;
152 fn RoadObjectBook_FindByType(
153 book: &RoadObjectBook,
154 obj_type: RoadObjectType,
155 ) -> UniquePtr<CxxVector<ConstRoadObjectPtr>>;
156 fn RoadObjectBook_FindByLane(
157 book: &RoadObjectBook,
158 lane_id: &String,
159 ) -> UniquePtr<CxxVector<ConstRoadObjectPtr>>;
160 fn RoadObjectBook_FindInRadius(
161 book: &RoadObjectBook,
162 x: f64,
163 y: f64,
164 z: f64,
165 radius: f64,
166 ) -> UniquePtr<CxxVector<ConstRoadObjectPtr>>;
167
168 type RoadObject;
170 fn RoadObject_id(obj: &RoadObject) -> String;
171 fn RoadObject_name(obj: &RoadObject) -> UniquePtr<StringWrapper>;
172 fn RoadObject_object_type(obj: &RoadObject) -> RoadObjectType;
175 fn RoadObject_subtype(obj: &RoadObject) -> UniquePtr<StringWrapper>;
176 fn RoadObject_position_inertial(obj: &RoadObject) -> UniquePtr<InertialPosition>;
177 fn RoadObject_position_has_lane_position(obj: &RoadObject) -> bool;
178 fn RoadObject_position_lane_id(obj: &RoadObject) -> String;
179 fn RoadObject_position_lane_s(obj: &RoadObject) -> f64;
180 fn RoadObject_position_lane_r(obj: &RoadObject) -> f64;
181 fn RoadObject_position_lane_h(obj: &RoadObject) -> f64;
182 fn RoadObject_orientation(obj: &RoadObject) -> UniquePtr<Rotation>;
183 fn RoadObject_bounding_box(obj: &RoadObject) -> UniquePtr<BoundingBox>;
184 fn is_dynamic(self: &RoadObject) -> bool;
185 fn is_movable(self: &RoadObject) -> bool;
186 fn RoadObject_related_lanes(obj: &RoadObject) -> Vec<String>;
187 fn num_outlines(self: &RoadObject) -> i32;
188 fn RoadObject_outlines(obj: &RoadObject) -> UniquePtr<CxxVector<ConstOutlinePtr>>;
189 fn RoadObject_properties(obj: &RoadObject) -> Vec<StringPair>;
190 fn RoadObject_continuous_properties(obj: &RoadObject) -> Vec<ContinuousObjectData>;
191
192 type Outline;
194 fn Outline_id(outline: &Outline) -> String;
195 fn Outline_is_closed(outline: &Outline) -> bool;
196 fn Outline_num_corners(outline: &Outline) -> i32;
197 fn Outline_corners(outline: &Outline) -> Vec<OutlineCornerData>;
198
199 type RoadMarkingValueUnit;
201
202 type RoadMarkingBook;
204 fn RoadMarkingBook_RoadMarkings(book: &RoadMarkingBook) -> UniquePtr<CxxVector<ConstRoadMarkingPtr>>;
205 fn RoadMarkingBook_GetRoadMarking(book: &RoadMarkingBook, id: &String) -> *const RoadMarking;
206 fn RoadMarkingBook_FindByLane(
207 book: &RoadMarkingBook,
208 lane_id: &String,
209 ) -> UniquePtr<CxxVector<ConstRoadMarkingPtr>>;
210 fn RoadMarkingBook_FindByType(
211 book: &RoadMarkingBook,
212 marking_type: TrafficControlDeviceType,
213 ) -> UniquePtr<CxxVector<ConstRoadMarkingPtr>>;
214
215 type RoadMarking;
217 fn RoadMarking_id(marking: &RoadMarking) -> String;
218 fn RoadMarking_name(marking: &RoadMarking) -> UniquePtr<StringWrapper>;
219 fn RoadMarking_marking_type(marking: &RoadMarking) -> TrafficControlDeviceType;
221 fn RoadMarking_position_inertial(marking: &RoadMarking) -> UniquePtr<InertialPosition>;
222 fn RoadMarking_position_has_lane_position(marking: &RoadMarking) -> bool;
223 fn RoadMarking_position_lane_id(marking: &RoadMarking) -> String;
224 fn RoadMarking_position_lane_s(marking: &RoadMarking) -> f64;
225 fn RoadMarking_position_lane_r(marking: &RoadMarking) -> f64;
226 fn RoadMarking_position_lane_h(marking: &RoadMarking) -> f64;
227 fn RoadMarking_orientation(marking: &RoadMarking) -> UniquePtr<Rotation>;
228 fn RoadMarking_bounding_box(marking: &RoadMarking) -> UniquePtr<BoundingBox>;
229 fn RoadMarking_related_lanes(marking: &RoadMarking) -> Vec<String>;
230 fn num_outlines(self: &RoadMarking) -> i32;
231 fn RoadMarking_outlines(marking: &RoadMarking) -> UniquePtr<CxxVector<ConstOutlinePtr>>;
232 fn RoadMarking_value(marking: &RoadMarking) -> RoadMarkingValueData;
233 }
234}