pyforge_ffi/cpython/
pymem.rs1use libc::size_t;
2use std::ffi::c_void;
3
4extern_libpython! {
5 pub fn PyMem_RawMalloc(size: size_t) -> *mut c_void;
6 pub fn PyMem_RawCalloc(nelem: size_t, elsize: size_t) -> *mut c_void;
7 pub fn PyMem_RawRealloc(ptr: *mut c_void, new_size: size_t) -> *mut c_void;
8 pub fn PyMem_RawFree(ptr: *mut c_void);
9
10 }
15
16#[repr(C)]
17#[derive(Copy, Clone)]
18pub enum PyMemAllocatorDomain {
19 PYMEM_DOMAIN_RAW,
20 PYMEM_DOMAIN_MEM,
21 PYMEM_DOMAIN_OBJ,
22}
23
24#[repr(C)]
27#[derive(Copy, Clone)]
28pub struct PyMemAllocatorEx {
29 pub ctx: *mut c_void,
30 pub malloc: Option<extern "C" fn(ctx: *mut c_void, size: size_t) -> *mut c_void>,
31 pub calloc:
32 Option<extern "C" fn(ctx: *mut c_void, nelem: size_t, elsize: size_t) -> *mut c_void>,
33 pub realloc:
34 Option<extern "C" fn(ctx: *mut c_void, ptr: *mut c_void, new_size: size_t) -> *mut c_void>,
35 pub free: Option<extern "C" fn(ctx: *mut c_void, ptr: *mut c_void)>,
36}
37
38extern_libpython! {
39
40 pub fn PyMem_GetAllocator(domain: PyMemAllocatorDomain, allocator: *mut PyMemAllocatorEx);
41
42 pub fn PyMem_SetAllocator(domain: PyMemAllocatorDomain, allocator: *mut PyMemAllocatorEx);
43
44 pub fn PyMem_SetupDebugHooks();
45}