@@ -19,14 +19,15 @@ type_name = msg_spec.structure.namespaced_type.name
19
19
20
20
# [link(name = "@(package_name)__rosidl_typesupport_c")]
21
21
extern " C" {
22
- fn rosidl_typesupport_c__get_message_type_support_handle__@ (package_name)__@ (subfolder)__@ (type_name)() -> libc :: uintptr_t ;
22
+ fn rosidl_typesupport_c__get_message_type_support_handle__@ (package_name)__@ (subfolder)__@ (type_name)() -> * const std :: os :: raw :: c_void ;
23
23
}
24
24
25
25
# [link(name = "@(package_name)__rosidl_generator_c")]
26
26
extern " C" {
27
27
fn @ (package_name)__@ (subfolder)__@ (type_name)__init (msg : * mut @ (type_name)) -> bool;
28
- fn @ (package_name)__@ (subfolder)__@ (type_name)__Sequence__init (seq : * mut rosidl_runtime_rs :: Sequence < @ (type_name)> , size : libc :: size_t ) -> bool;
28
+ fn @ (package_name)__@ (subfolder)__@ (type_name)__Sequence__init (seq : * mut rosidl_runtime_rs :: Sequence < @ (type_name)> , size : usize ) -> bool;
29
29
fn @ (package_name)__@ (subfolder)__@ (type_name)__Sequence__fini (seq : * mut rosidl_runtime_rs :: Sequence < @ (type_name)> );
30
+ fn @ (package_name)__@ (subfolder)__@ (type_name)__Sequence__copy (in_seq : & rosidl_runtime_rs :: Sequence < @ (type_name)> , out_seq : * mut rosidl_runtime_rs :: Sequence < @ (type_name)> ) -> bool;
30
31
}
31
32
32
33
@ # Drop is not needed, since the default drop glue does the same as fini here:
@@ -80,18 +81,17 @@ impl Default for @(type_name) {
80
81
}
81
82
82
83
impl rosidl_runtime_rs::SequenceAlloc for @(type_name) {
83
- fn sequence_init(seq: &mut rosidl_runtime_rs::Sequence<Self>, size: libc::size_t ) -> bool {
84
- // SAFETY: This is safe since a the point is guaranteed to be valid/initialized.
84
+ fn sequence_init(seq: &mut rosidl_runtime_rs::Sequence<Self>, size: usize ) -> bool {
85
+ // SAFETY: This is safe since the pointer is guaranteed to be valid/initialized.
85
86
unsafe { @(package_name)__@(subfolder)__@(type_name)__Sequence__init(seq as *mut _, size) }
86
87
}
87
88
fn sequence_fini(seq: &mut rosidl_runtime_rs::Sequence<Self>) {
88
- // SAFETY: This is safe since a the point is guaranteed to be valid/initialized.
89
+ // SAFETY: This is safe since the pointer is guaranteed to be valid/initialized.
89
90
unsafe { @(package_name)__@(subfolder)__@(type_name)__Sequence__fini(seq as *mut _) }
90
91
}
91
92
fn sequence_copy(in_seq: &rosidl_runtime_rs::Sequence<Self>, out_seq: &mut rosidl_runtime_rs::Sequence<Self>) -> bool {
92
- out_seq.resize_to_at_least(in_seq.len());
93
- out_seq.clone_from_slice(in_seq.as_slice());
94
- true
93
+ // SAFETY: This is safe since the pointer is guaranteed to be valid/initialized.
94
+ unsafe { @(package_name)__@(subfolder)__@(type_name)__Sequence__copy(in_seq, out_seq as *mut _) }
95
95
}
96
96
}
97
97
@@ -103,7 +103,7 @@ impl rosidl_runtime_rs::Message for @(type_name) {
103
103
104
104
impl rosidl_runtime_rs::RmwMessage for @(type_name) where Self: Sized {
105
105
const TYPE_NAME: &' static str = " @(package_name)/@(subfolder)/@(type_name)" ;
106
- fn get_type_support () -> libc :: uintptr_t {
106
+ fn get_type_support () -> * const std :: os :: raw :: c_void {
107
107
// SAFETY : No preconditions for this function .
108
108
unsafe { rosidl_typesupport_c__get_message_type_support_handle__@ (package_name)__@ (subfolder)__@ (type_name)() }
109
109
}
0 commit comments