use libffi_sys::{ffi_abi_FFI_LP64D, ffi_abi_FFI_LP64F, ffi_abi_FFI_LP64S};
#[cfg(not(docsrs))]
use super::Abi;
#[cfg(docsrs)]
pub struct Abi(libffi_sys::ffi_abi);
impl Abi {
pub const LP64S: Self = Abi(ffi_abi_FFI_LP64S);
pub const LP64F: Self = Abi(ffi_abi_FFI_LP64F);
pub const LP64D: Self = Abi(ffi_abi_FFI_LP64D);
#[cfg(test)]
#[doc(hidden)]
pub const ABIS: [Self; 3] = [Self::LP64S, Self::LP64F, Self::LP64D];
}
impl Default for Abi {
fn default() -> Self {
Self::LP64D
}
}
#[cfg(test)]
mod tests {
use super::super::test_utils::test_create_closure_and_call_with_abi;
use super::Abi;
#[test]
#[cfg_attr(miri, ignore)]
fn test_lp64s_abi_closure_call() {
test_create_closure_and_call_with_abi(Abi::LP64S);
}
#[test]
#[cfg_attr(miri, ignore)]
fn test_lp64f_abi_closure_call() {
test_create_closure_and_call_with_abi(Abi::LP64F);
}
#[test]
#[cfg_attr(miri, ignore)]
fn test_lp64d_abi_closure_call() {
test_create_closure_and_call_with_abi(Abi::LP64D);
}
}