pyo3_ffi/cpython/
pyframe.rs1#[cfg(any(Py_3_11, all(Py_3_9, not(PyPy))))]
2use crate::PyFrameObject;
3use crate::{PyObject, PyTypeObject, Py_IS_TYPE};
4#[cfg(Py_3_12)]
5use core::ffi::c_char;
6use core::ffi::c_int;
7
8#[cfg(all(Py_3_11, not(PyPy)))]
9opaque_struct!(pub _PyInterpreterFrame);
10
11#[cfg(Py_3_13)]
12pub const PyUnstable_EXECUTABLE_KIND_SKIP: c_int = 0;
13#[cfg(Py_3_13)]
14pub const PyUnstable_EXECUTABLE_KIND_PY_FUNCTION: c_int = 1;
15#[cfg(Py_3_13)]
16pub const PyUnstable_EXECUTABLE_KIND_BUILTIN_FUNCTION: c_int = 3;
17#[cfg(Py_3_13)]
18pub const PyUnstable_EXECUTABLE_KIND_METHOD_DESCRIPTOR: c_int = 4;
19#[cfg(Py_3_13)]
20pub const PyUnstable_EXECUTABLE_KINDS: c_int = 5;
21
22extern_libpython! {
23 pub static mut PyFrame_Type: PyTypeObject;
24
25 #[cfg(Py_3_13)]
26 pub static mut PyFrameLocalsProxy_Type: PyTypeObject;
27
28 #[cfg(Py_3_13)]
29 pub static PyUnstable_ExecutableKinds: [*const PyTypeObject; 6];
30}
31
32#[inline]
33pub unsafe fn PyFrame_Check(op: *mut PyObject) -> c_int {
34 Py_IS_TYPE(op, &raw mut PyFrame_Type)
35}
36
37#[cfg(Py_3_13)]
38#[inline]
39pub unsafe fn PyFrameLocalsProxy_Check(op: *mut PyObject) -> c_int {
40 Py_IS_TYPE(op, &raw mut PyFrameLocalsProxy_Type)
41}
42
43extern_libpython! {
44 #[cfg(all(Py_3_9, not(PyPy)))]
45 pub fn PyFrame_GetBack(frame: *mut PyFrameObject) -> *mut PyFrameObject;
46
47 #[cfg(Py_3_11)]
48 pub fn PyFrame_GetLocals(frame: *mut PyFrameObject) -> *mut PyObject;
49
50 #[cfg(Py_3_11)]
51 pub fn PyFrame_GetGlobals(frame: *mut PyFrameObject) -> *mut PyObject;
52
53 #[cfg(Py_3_11)]
54 pub fn PyFrame_GetBuiltins(frame: *mut PyFrameObject) -> *mut PyObject;
55
56 #[cfg(Py_3_11)]
57 pub fn PyFrame_GetGenerator(frame: *mut PyFrameObject) -> *mut PyObject;
58
59 #[cfg(Py_3_11)]
60 pub fn PyFrame_GetLasti(frame: *mut PyFrameObject) -> c_int;
61
62 #[cfg(Py_3_12)]
63 pub fn PyFrame_GetVar(frame: *mut PyFrameObject, name: *mut PyObject) -> *mut PyObject;
64
65 #[cfg(Py_3_12)]
66 pub fn PyFrame_GetVarString(frame: *mut PyFrameObject, name: *mut c_char) -> *mut PyObject;
67
68 #[cfg(Py_3_12)]
69 pub fn PyUnstable_InterpreterFrame_GetCode(frame: *mut _PyInterpreterFrame) -> *mut PyObject;
70
71 #[cfg(Py_3_12)]
72 pub fn PyUnstable_InterpreterFrame_GetLasti(frame: *mut _PyInterpreterFrame) -> c_int;
73
74 #[cfg(Py_3_12)]
75 pub fn PyUnstable_InterpreterFrame_GetLine(frame: *mut _PyInterpreterFrame) -> c_int;
76}