use std::os::raw::{c_char, c_void};
#[inline(always)]
pub unsafe fn pa_xnew(n: usize, k: usize) -> *mut c_void {
assert!(n < (std::i32::MAX as usize / k));
pa_xmalloc(n * k)
}
#[inline(always)]
pub unsafe fn pa_xnew0(n: usize, k: usize) -> *mut c_void {
assert!(n < (std::i32::MAX as usize / k));
pa_xmalloc0(n * k)
}
#[inline(always)]
pub unsafe fn pa_xnewdup(p: *const c_void, n: usize, k: usize) -> *mut c_void {
assert!(n < (std::i32::MAX as usize / k));
pa_xmemdup(p, n * k)
}
#[inline(always)]
pub unsafe fn pa_xrenew(p: *mut c_void, n: usize, k: usize) -> *mut c_void {
assert!(n < (std::i32::MAX as usize / k));
pa_xrealloc(p, n * k)
}
#[link(name = "pulse")]
extern "C" {
pub fn pa_xmalloc(l: usize) -> *mut c_void;
pub fn pa_xmalloc0(l: usize) -> *mut c_void;
pub fn pa_xrealloc(ptr: *mut c_void, size: usize) -> *mut c_void;
pub fn pa_xfree(p: *mut c_void);
pub fn pa_xstrdup(s: *const c_char) -> *mut c_char;
pub fn pa_xstrndup(s: *const c_char, l: usize) -> *mut c_char;
pub fn pa_xmemdup(p: *const c_void, l: usize) -> *mut c_void;
}