use libdeflate_sys::libdeflate_options;
use std::alloc::*;
use std::ffi::c_void;
use std::mem::{align_of, size_of};
unsafe fn layout_for(size: usize) -> Layout {
Layout::from_size_align_unchecked(size_of::<usize>() + size, align_of::<usize>())
}
unsafe extern "C" fn malloc(size: usize) -> *mut c_void {
let size_and_data_ptr = alloc(layout_for(size));
*(size_and_data_ptr as *mut usize) = size;
size_and_data_ptr.add(size_of::<usize>()) as _
}
unsafe extern "C" fn free(data_ptr: *mut c_void) {
let size_and_data_ptr = data_ptr.sub(size_of::<usize>());
let size = *(size_and_data_ptr as *const usize);
dealloc(size_and_data_ptr as _, layout_for(size))
}
pub static OPTIONS: libdeflate_options = libdeflate_options {
sizeof_options: size_of::<libdeflate_options>(),
malloc_func: Some(malloc),
free_func: Some(free),
};