Manage Float and Double FFI types in structs
This commit is contained in:
12
src/ffi.rs
12
src/ffi.rs
@@ -436,6 +436,18 @@ impl ForeignFunctionTable {
|
||||
}
|
||||
libffi::raw::FFI_TYPE_SINT64 => read_and_push_int!(i64),
|
||||
libffi::raw::FFI_TYPE_POINTER => read_and_push_int!(i64),
|
||||
libffi::raw::FFI_TYPE_FLOAT => {
|
||||
field_ptr = field_ptr.add(field_ptr.align_offset(std::mem::align_of::<f32>()));
|
||||
let n = std::ptr::read(field_ptr as *mut f32);
|
||||
returns.push(Value::Float(f32::from(n).into()));
|
||||
field_ptr = field_ptr.add(std::mem::size_of::<f32>());
|
||||
}
|
||||
libffi::raw::FFI_TYPE_DOUBLE => {
|
||||
field_ptr = field_ptr.add(field_ptr.align_offset(std::mem::align_of::<f64>()));
|
||||
let n = std::ptr::read(field_ptr as *mut f64);
|
||||
returns.push(Value::Float(f64::from(n)));
|
||||
field_ptr = field_ptr.add(std::mem::size_of::<f64>());
|
||||
}
|
||||
libffi::raw::FFI_TYPE_STRUCT => {
|
||||
let substruct = struct_type.atom_fields[i].as_str();
|
||||
let struct_type = self
|
||||
|
||||
Reference in New Issue
Block a user