use crate::bindings;
use std::cmp::min;
use std::mem::size_of;

pub fn cswap_loop<T>(a: &mut [T], b: &mut [T]) {
    unsafe {
        bindings::swap_loop(
            a.as_mut_ptr() as *mut i8,
            b.as_mut_ptr() as *mut i8,
            (size_of::<T>() * min(a.len(), b.len())) as bindings::size_t,
        )
    }
}

pub fn cswap_malloc<T>(a: &mut [T], b: &mut [T]) {
    unsafe {
        bindings::swap_malloc(
            a.as_mut_ptr() as *mut i8,
            b.as_mut_ptr() as *mut i8,
            (size_of::<T>() * min(a.len(), b.len())) as bindings::size_t,
        )
    }
}

pub fn cswap_alloca<T>(a: &mut [T], b: &mut [T]) {
    unsafe {
        bindings::swap_alloca(
            a.as_mut_ptr() as *mut i8,
            b.as_mut_ptr() as *mut i8,
            (size_of::<T>() * min(a.len(), b.len())) as bindings::size_t,
        )
    }
}
