safe_drive/msg/jazzy/interfaces/lifecycle_msgs/srv/
get_available_transitions.rs

1// This file was automatically generated by ros2msg_to_rs (https://github.com/tier4/ros2msg_to_rs).
2use super::super::super::*;
3use super::super::*;
4use crate::msg::common_interfaces::*;
5use crate::msg::*;
6use crate::rcl;
7
8extern "C" {
9    fn lifecycle_msgs__srv__GetAvailableTransitions_Request__init(
10        msg: *mut GetAvailableTransitionsRequest,
11    ) -> bool;
12    fn lifecycle_msgs__srv__GetAvailableTransitions_Request__fini(
13        msg: *mut GetAvailableTransitionsRequest,
14    );
15    fn lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence__init(
16        msg: *mut GetAvailableTransitionsRequestSeqRaw,
17        size: usize,
18    ) -> bool;
19    fn lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence__fini(
20        msg: *mut GetAvailableTransitionsRequestSeqRaw,
21    );
22    fn lifecycle_msgs__srv__GetAvailableTransitions_Response__init(
23        msg: *mut GetAvailableTransitionsResponse,
24    ) -> bool;
25    fn lifecycle_msgs__srv__GetAvailableTransitions_Response__fini(
26        msg: *mut GetAvailableTransitionsResponse,
27    );
28    fn lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence__init(
29        msg: *mut GetAvailableTransitionsResponseSeqRaw,
30        size: usize,
31    ) -> bool;
32    fn lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence__fini(
33        msg: *mut GetAvailableTransitionsResponseSeqRaw,
34    );
35    fn rosidl_typesupport_c__get_service_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions(
36    ) -> *const rcl::rosidl_service_type_support_t;
37    fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Request(
38    ) -> *const rcl::rosidl_message_type_support_t;
39    fn rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Response(
40    ) -> *const rcl::rosidl_message_type_support_t;
41}
42
43#[repr(C)]
44#[derive(Debug)]
45pub struct GetAvailableTransitionsRequest {
46    _unused: u8,
47}
48
49#[repr(C)]
50#[derive(Debug)]
51pub struct GetAvailableTransitionsResponse {
52    pub available_transitions: TransitionDescriptionSeq<0>,
53}
54
55impl GetAvailableTransitionsRequest {
56    pub fn new() -> Option<Self> {
57        let mut msg: Self = unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
58        if unsafe { lifecycle_msgs__srv__GetAvailableTransitions_Request__init(&mut msg) } {
59            Some(msg)
60        } else {
61            None
62        }
63    }
64}
65
66impl Drop for GetAvailableTransitionsRequest {
67    fn drop(&mut self) {
68        unsafe { lifecycle_msgs__srv__GetAvailableTransitions_Request__fini(self) };
69    }
70}
71
72#[repr(C)]
73#[derive(Debug)]
74struct GetAvailableTransitionsRequestSeqRaw {
75    data: *mut GetAvailableTransitionsRequest,
76    size: size_t,
77    capacity: size_t,
78}
79
80/// Sequence of GetAvailableTransitionsRequest.
81/// `N` is the maximum number of elements.
82/// If `N` is `0`, the size is unlimited.
83#[repr(C)]
84#[derive(Debug)]
85pub struct GetAvailableTransitionsRequestSeq<const N: usize> {
86    data: *mut GetAvailableTransitionsRequest,
87    size: size_t,
88    capacity: size_t,
89}
90
91impl<const N: usize> GetAvailableTransitionsRequestSeq<N> {
92    /// Create a sequence of.
93    /// `N` represents the maximum number of elements.
94    /// If `N` is `0`, the sequence is unlimited.
95    pub fn new(size: usize) -> Option<Self> {
96        if N != 0 && size > N {
97            // the size exceeds in the maximum number
98            return None;
99        }
100
101        let mut msg: GetAvailableTransitionsRequestSeqRaw =
102            unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
103        if unsafe {
104            lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence__init(&mut msg, size)
105        } {
106            Some(Self {
107                data: msg.data,
108                size: msg.size,
109                capacity: msg.capacity,
110            })
111        } else {
112            None
113        }
114    }
115
116    pub fn null() -> Self {
117        let msg: GetAvailableTransitionsRequestSeqRaw =
118            unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
119        Self {
120            data: msg.data,
121            size: msg.size,
122            capacity: msg.capacity,
123        }
124    }
125
126    pub fn as_slice(&self) -> &[GetAvailableTransitionsRequest] {
127        if self.data.is_null() {
128            &[]
129        } else {
130            let s = unsafe { std::slice::from_raw_parts(self.data, self.size as _) };
131            s
132        }
133    }
134
135    pub fn as_slice_mut(&mut self) -> &mut [GetAvailableTransitionsRequest] {
136        if self.data.is_null() {
137            &mut []
138        } else {
139            let s = unsafe { std::slice::from_raw_parts_mut(self.data, self.size as _) };
140            s
141        }
142    }
143
144    pub fn iter(&self) -> std::slice::Iter<'_, GetAvailableTransitionsRequest> {
145        self.as_slice().iter()
146    }
147
148    pub fn iter_mut(&mut self) -> std::slice::IterMut<'_, GetAvailableTransitionsRequest> {
149        self.as_slice_mut().iter_mut()
150    }
151
152    pub fn len(&self) -> usize {
153        self.as_slice().len()
154    }
155
156    pub fn is_empty(&self) -> bool {
157        self.len() == 0
158    }
159}
160
161impl<const N: usize> Drop for GetAvailableTransitionsRequestSeq<N> {
162    fn drop(&mut self) {
163        let mut msg = GetAvailableTransitionsRequestSeqRaw {
164            data: self.data,
165            size: self.size,
166            capacity: self.capacity,
167        };
168        unsafe { lifecycle_msgs__srv__GetAvailableTransitions_Request__Sequence__fini(&mut msg) };
169    }
170}
171
172unsafe impl<const N: usize> Send for GetAvailableTransitionsRequestSeq<N> {}
173unsafe impl<const N: usize> Sync for GetAvailableTransitionsRequestSeq<N> {}
174
175impl GetAvailableTransitionsResponse {
176    pub fn new() -> Option<Self> {
177        let mut msg: Self = unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
178        if unsafe { lifecycle_msgs__srv__GetAvailableTransitions_Response__init(&mut msg) } {
179            Some(msg)
180        } else {
181            None
182        }
183    }
184}
185
186impl Drop for GetAvailableTransitionsResponse {
187    fn drop(&mut self) {
188        unsafe { lifecycle_msgs__srv__GetAvailableTransitions_Response__fini(self) };
189    }
190}
191
192#[repr(C)]
193#[derive(Debug)]
194struct GetAvailableTransitionsResponseSeqRaw {
195    data: *mut GetAvailableTransitionsResponse,
196    size: size_t,
197    capacity: size_t,
198}
199
200/// Sequence of GetAvailableTransitionsResponse.
201/// `N` is the maximum number of elements.
202/// If `N` is `0`, the size is unlimited.
203#[repr(C)]
204#[derive(Debug)]
205pub struct GetAvailableTransitionsResponseSeq<const N: usize> {
206    data: *mut GetAvailableTransitionsResponse,
207    size: size_t,
208    capacity: size_t,
209}
210
211impl<const N: usize> GetAvailableTransitionsResponseSeq<N> {
212    /// Create a sequence of.
213    /// `N` represents the maximum number of elements.
214    /// If `N` is `0`, the sequence is unlimited.
215    pub fn new(size: usize) -> Option<Self> {
216        if N != 0 && size > N {
217            // the size exceeds in the maximum number
218            return None;
219        }
220
221        let mut msg: GetAvailableTransitionsResponseSeqRaw =
222            unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
223        if unsafe {
224            lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence__init(&mut msg, size)
225        } {
226            Some(Self {
227                data: msg.data,
228                size: msg.size,
229                capacity: msg.capacity,
230            })
231        } else {
232            None
233        }
234    }
235
236    pub fn null() -> Self {
237        let msg: GetAvailableTransitionsResponseSeqRaw =
238            unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
239        Self {
240            data: msg.data,
241            size: msg.size,
242            capacity: msg.capacity,
243        }
244    }
245
246    pub fn as_slice(&self) -> &[GetAvailableTransitionsResponse] {
247        if self.data.is_null() {
248            &[]
249        } else {
250            let s = unsafe { std::slice::from_raw_parts(self.data, self.size as _) };
251            s
252        }
253    }
254
255    pub fn as_slice_mut(&mut self) -> &mut [GetAvailableTransitionsResponse] {
256        if self.data.is_null() {
257            &mut []
258        } else {
259            let s = unsafe { std::slice::from_raw_parts_mut(self.data, self.size as _) };
260            s
261        }
262    }
263
264    pub fn iter(&self) -> std::slice::Iter<'_, GetAvailableTransitionsResponse> {
265        self.as_slice().iter()
266    }
267
268    pub fn iter_mut(&mut self) -> std::slice::IterMut<'_, GetAvailableTransitionsResponse> {
269        self.as_slice_mut().iter_mut()
270    }
271
272    pub fn len(&self) -> usize {
273        self.as_slice().len()
274    }
275
276    pub fn is_empty(&self) -> bool {
277        self.len() == 0
278    }
279}
280
281impl<const N: usize> Drop for GetAvailableTransitionsResponseSeq<N> {
282    fn drop(&mut self) {
283        let mut msg = GetAvailableTransitionsResponseSeqRaw {
284            data: self.data,
285            size: self.size,
286            capacity: self.capacity,
287        };
288        unsafe { lifecycle_msgs__srv__GetAvailableTransitions_Response__Sequence__fini(&mut msg) };
289    }
290}
291
292unsafe impl<const N: usize> Send for GetAvailableTransitionsResponseSeq<N> {}
293unsafe impl<const N: usize> Sync for GetAvailableTransitionsResponseSeq<N> {}
294
295pub struct GetAvailableTransitions;
296
297impl ServiceMsg for GetAvailableTransitions {
298    type Request = GetAvailableTransitionsRequest;
299    type Response = GetAvailableTransitionsResponse;
300    fn type_support() -> *const rcl::rosidl_service_type_support_t {
301        unsafe {
302            rosidl_typesupport_c__get_service_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions()
303        }
304    }
305}
306
307impl TypeSupport for GetAvailableTransitionsRequest {
308    fn type_support() -> *const rcl::rosidl_message_type_support_t {
309        unsafe {
310            rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Request()
311        }
312    }
313}
314
315impl TypeSupport for GetAvailableTransitionsResponse {
316    fn type_support() -> *const rcl::rosidl_message_type_support_t {
317        unsafe {
318            rosidl_typesupport_c__get_message_type_support_handle__lifecycle_msgs__srv__GetAvailableTransitions_Response()
319        }
320    }
321}