@@ -10,65 +10,74 @@ use crate::types::FfiVec;
1010// is to match the names of the variants in hl_ReturnType,
1111// which is used in the C macros in macro.h
1212
13- #[ no_mangle]
13+ #[ unsafe ( no_mangle) ]
1414pub extern "C" fn hl_flatbuffer_result_from_Int ( value : i32 ) -> Box < FfiVec > {
1515 let vec = get_flatbuffer_result ( value) ;
1616
1717 Box :: new ( unsafe { FfiVec :: from_vec ( vec) } )
1818}
1919
20- #[ no_mangle]
20+ #[ unsafe ( no_mangle) ]
2121pub extern "C" fn hl_flatbuffer_result_from_UInt ( value : u32 ) -> Box < FfiVec > {
2222 let vec = get_flatbuffer_result ( value) ;
2323
2424 Box :: new ( unsafe { FfiVec :: from_vec ( vec) } )
2525}
2626
27- #[ no_mangle]
27+ #[ unsafe ( no_mangle) ]
2828pub extern "C" fn hl_flatbuffer_result_from_Long ( value : i64 ) -> Box < FfiVec > {
2929 let vec = get_flatbuffer_result ( value) ;
3030
3131 Box :: new ( unsafe { FfiVec :: from_vec ( vec) } )
3232}
3333
34- #[ no_mangle]
34+ #[ unsafe ( no_mangle) ]
3535pub extern "C" fn hl_flatbuffer_result_from_ULong ( value : u64 ) -> Box < FfiVec > {
3636 let vec = get_flatbuffer_result ( value) ;
3737
3838 Box :: new ( unsafe { FfiVec :: from_vec ( vec) } )
3939}
4040
41- #[ no_mangle]
41+ #[ unsafe ( no_mangle) ]
4242pub extern "C" fn hl_flatbuffer_result_from_Float ( value : f32 ) -> Box < FfiVec > {
4343 let vec = get_flatbuffer_result ( value) ;
4444
4545 Box :: new ( unsafe { FfiVec :: from_vec ( vec) } )
4646}
4747
48- #[ no_mangle]
48+ #[ unsafe ( no_mangle) ]
4949pub extern "C" fn hl_flatbuffer_result_from_Double ( value : f64 ) -> Box < FfiVec > {
5050 let vec = get_flatbuffer_result ( value) ;
5151
5252 Box :: new ( unsafe { FfiVec :: from_vec ( vec) } )
5353}
5454
55- #[ no_mangle]
55+ #[ unsafe ( no_mangle) ]
5656pub extern "C" fn hl_flatbuffer_result_from_Void ( ) -> Box < FfiVec > {
5757 let vec = get_flatbuffer_result ( ( ) ) ;
5858
5959 Box :: new ( unsafe { FfiVec :: from_vec ( vec) } )
6060}
6161
62- #[ no_mangle]
63- pub extern "C" fn hl_flatbuffer_result_from_String ( value : * const c_char ) -> Box < FfiVec > {
62+ /// # Safety
63+ ///
64+ /// Dereferences the given raw pointer.
65+ #[ unsafe( no_mangle) ]
66+ pub unsafe extern "C" fn hl_flatbuffer_result_from_String ( value : * const c_char ) -> Box < FfiVec > {
6467 let str = unsafe { CStr :: from_ptr ( value) } ;
6568 let vec = get_flatbuffer_result ( str. to_string_lossy ( ) . as_ref ( ) ) ;
6669
6770 Box :: new ( unsafe { FfiVec :: from_vec ( vec) } )
6871}
6972
70- #[ no_mangle]
71- pub extern "C" fn hl_flatbuffer_result_from_Bytes ( data : * const u8 , len : usize ) -> Box < FfiVec > {
73+ /// # Safety
74+ ///
75+ /// Dereferences the given raw pointer.
76+ #[ unsafe( no_mangle) ]
77+ pub unsafe extern "C" fn hl_flatbuffer_result_from_Bytes (
78+ data : * const u8 ,
79+ len : usize ,
80+ ) -> Box < FfiVec > {
7281 let slice = unsafe { core:: slice:: from_raw_parts ( data, len) } ;
7382
7483 let vec = get_flatbuffer_result ( slice) ;
@@ -78,23 +87,23 @@ pub extern "C" fn hl_flatbuffer_result_from_Bytes(data: *const u8, len: usize) -
7887
7988//--- Functions for getting values returned by host functions calls
8089
81- #[ no_mangle]
90+ #[ unsafe ( no_mangle) ]
8291pub extern "C" fn hl_get_host_return_value_as_Int ( ) -> i32 {
8392 get_host_return_value ( ) . expect ( "Unable to get host return value as int" )
8493}
8594
86- #[ no_mangle]
95+ #[ unsafe ( no_mangle) ]
8796pub extern "C" fn hl_get_host_return_value_as_UInt ( ) -> u32 {
8897 get_host_return_value ( ) . expect ( "Unable to get host return value as uint" )
8998}
9099
91100// the same for long, ulong
92- #[ no_mangle]
101+ #[ unsafe ( no_mangle) ]
93102pub extern "C" fn hl_get_host_return_value_as_Long ( ) -> i64 {
94103 get_host_return_value ( ) . expect ( "Unable to get host return value as long" )
95104}
96105
97- #[ no_mangle]
106+ #[ unsafe ( no_mangle) ]
98107pub extern "C" fn hl_get_host_return_value_as_ULong ( ) -> u64 {
99108 get_host_return_value ( ) . expect ( "Unable to get host return value as ulong" )
100109}
0 commit comments