1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
use libc::{c_void, size_t}; #[cfg(Py_3_4)] #[cfg(not(Py_LIMITED_API))] #[cfg_attr(windows, link(name="pythonXY"))] extern "C" { pub fn PyMem_RawMalloc(size: size_t) -> *mut c_void; #[cfg(Py_3_5)] pub fn PyMem_RawCalloc(nelem: size_t, elsize: size_t) -> *mut c_void; pub fn PyMem_RawRealloc(ptr: *mut c_void, new_size: size_t) -> *mut c_void; pub fn PyMem_RawFree(ptr: *mut c_void) -> (); } #[cfg_attr(windows, link(name="pythonXY"))] extern "C" { pub fn PyMem_Malloc(size: size_t) -> *mut c_void; #[cfg(Py_3_5)] pub fn PyMem_Calloc(nelem: size_t, elsize: size_t) -> *mut c_void; pub fn PyMem_Realloc(ptr: *mut c_void, new_size: size_t) -> *mut c_void; pub fn PyMem_Free(ptr: *mut c_void) -> (); } #[cfg(Py_3_4)] #[cfg(not(Py_LIMITED_API))] #[repr(C)] #[derive(Copy, Clone)] pub enum PyMemAllocatorDomain { PYMEM_DOMAIN_RAW, PYMEM_DOMAIN_MEM, PYMEM_DOMAIN_OBJ } #[repr(C)] #[derive(Copy, Clone)] #[cfg(all(Py_3_4, not(Py_3_5), not(Py_LIMITED_API)))] pub struct PyMemAllocator { pub ctx: *mut c_void, pub malloc: Option<extern "C" fn(ctx: *mut c_void, size: size_t) -> *mut c_void>, pub realloc: Option<extern "C" fn(ctx: *mut c_void, ptr: *mut c_void, new_size: size_t) -> *mut c_void>, pub free: Option<extern "C" fn(ctx: *mut c_void, ptr: *mut c_void) -> ()>, } #[repr(C)] #[derive(Copy, Clone)] #[cfg(all(Py_3_5, not(Py_LIMITED_API)))] pub struct PyMemAllocatorEx { pub ctx: *mut c_void, pub malloc: Option<extern "C" fn(ctx: *mut c_void, size: size_t) -> *mut c_void>, pub calloc: Option<extern "C" fn(ctx: *mut c_void, nelem: size_t, elsize: size_t) -> *mut c_void>, pub realloc: Option<extern "C" fn(ctx: *mut c_void, ptr: *mut c_void, new_size: size_t) -> *mut c_void>, pub free: Option<extern "C" fn(ctx: *mut c_void, ptr: *mut c_void) -> ()>, } #[cfg(Py_3_4)] #[cfg(not(Py_LIMITED_API))] #[cfg_attr(windows, link(name="pythonXY"))] extern "C" { #[cfg(not(Py_3_5))] pub fn PyMem_GetAllocator(domain: PyMemAllocatorDomain, allocator: *mut PyMemAllocator) -> (); #[cfg(not(Py_3_5))] pub fn PyMem_SetAllocator(domain: PyMemAllocatorDomain, allocator: *mut PyMemAllocator) -> (); #[cfg(Py_3_5)] pub fn PyMem_GetAllocator(domain: PyMemAllocatorDomain, allocator: *mut PyMemAllocatorEx) -> (); #[cfg(Py_3_5)] pub fn PyMem_SetAllocator(domain: PyMemAllocatorDomain, allocator: *mut PyMemAllocatorEx) -> (); pub fn PyMem_SetupDebugHooks() -> (); }