#![allow(non_camel_case_types)]
#[repr(C)]
#[derive(Debug, Clone)]
pub struct UDF_ARGSx {
pub arg_count: ::std::ffi::c_uint,
pub arg_types: *mut ::std::ffi::c_int,
pub args: *const *const ::std::ffi::c_char,
pub lengths: *const ::std::ffi::c_ulong,
pub maybe_null: *const ::std::ffi::c_char,
pub attributes: *const *const ::std::ffi::c_char,
pub attribute_lengths: *const ::std::ffi::c_ulong,
pub extension: *const ::std::ffi::c_void,
}
#[cfg(test)]
mod tests {
use std::alloc::Layout;
use udf_sys::UDF_ARGS;
use super::*;
#[test]
fn test_layout() {
let layout_default = Layout::new::<UDF_ARGS>();
let layout_modded = Layout::new::<UDF_ARGSx>();
assert_eq!(layout_default, layout_modded);
}
#[test]
fn test_field_arg_type() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<UDF_ARGS>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).arg_types) as usize - ptr as usize
},
8usize,
concat!(
"Offset of field: ",
stringify!(UDF_ARGS),
"::",
stringify!(arg_type)
)
);
}
#[test]
fn test_field_lengths() {
assert_eq!(
unsafe {
let uninit = ::std::mem::MaybeUninit::<UDF_ARGS>::uninit();
let ptr = uninit.as_ptr();
::std::ptr::addr_of!((*ptr).lengths) as usize - ptr as usize
},
24usize,
concat!(
"Offset of field: ",
stringify!(UDF_ARGS),
"::",
stringify!(lengths)
)
);
}
}