Skip to main content

pyo3_ffi/cpython/
pythonrun.rs

1use crate::object::*;
2#[cfg(not(any(PyPy, GraalPy, Py_LIMITED_API, Py_3_10)))]
3use crate::pyarena::PyArena;
4use crate::PyCompilerFlags;
5#[cfg(not(any(PyPy, GraalPy, Py_3_10)))]
6use crate::{_mod, _node};
7use core::ffi::{c_char, c_int};
8use libc::FILE;
9
10extern_libpython! {
11    pub fn PyRun_SimpleStringFlags(arg1: *const c_char, arg2: *mut PyCompilerFlags) -> c_int;
12    pub fn PyRun_AnyFileExFlags(
13        fp: *mut FILE,
14        filename: *const c_char,
15        closeit: c_int,
16        flags: *mut PyCompilerFlags,
17    ) -> c_int;
18    pub fn PyRun_SimpleFileExFlags(
19        fp: *mut FILE,
20        filename: *const c_char,
21        closeit: c_int,
22        flags: *mut PyCompilerFlags,
23    ) -> c_int;
24    pub fn PyRun_InteractiveOneFlags(
25        fp: *mut FILE,
26        filename: *const c_char,
27        flags: *mut PyCompilerFlags,
28    ) -> c_int;
29    pub fn PyRun_InteractiveOneObject(
30        fp: *mut FILE,
31        filename: *mut PyObject,
32        flags: *mut PyCompilerFlags,
33    ) -> c_int;
34    pub fn PyRun_InteractiveLoopFlags(
35        fp: *mut FILE,
36        filename: *const c_char,
37        flags: *mut PyCompilerFlags,
38    ) -> c_int;
39
40    #[cfg(not(any(PyPy, GraalPy, Py_3_10)))]
41    pub fn PyParser_ASTFromString(
42        s: *const c_char,
43        filename: *const c_char,
44        start: c_int,
45        flags: *mut PyCompilerFlags,
46        arena: *mut PyArena,
47    ) -> *mut _mod;
48    #[cfg(not(any(PyPy, GraalPy, Py_3_10)))]
49    pub fn PyParser_ASTFromStringObject(
50        s: *const c_char,
51        filename: *mut PyObject,
52        start: c_int,
53        flags: *mut PyCompilerFlags,
54        arena: *mut PyArena,
55    ) -> *mut _mod;
56    #[cfg(not(any(PyPy, GraalPy, Py_3_10)))]
57    pub fn PyParser_ASTFromFile(
58        fp: *mut FILE,
59        filename: *const c_char,
60        enc: *const c_char,
61        start: c_int,
62        ps1: *const c_char,
63        ps2: *const c_char,
64        flags: *mut PyCompilerFlags,
65        errcode: *mut c_int,
66        arena: *mut PyArena,
67    ) -> *mut _mod;
68    #[cfg(not(any(PyPy, GraalPy, Py_3_10)))]
69    pub fn PyParser_ASTFromFileObject(
70        fp: *mut FILE,
71        filename: *mut PyObject,
72        enc: *const c_char,
73        start: c_int,
74        ps1: *const c_char,
75        ps2: *const c_char,
76        flags: *mut PyCompilerFlags,
77        errcode: *mut c_int,
78        arena: *mut PyArena,
79    ) -> *mut _mod;
80
81    #[cfg_attr(PyPy, link_name = "PyPyRun_StringFlags")]
82    pub fn PyRun_StringFlags(
83        arg1: *const c_char,
84        arg2: c_int,
85        arg3: *mut PyObject,
86        arg4: *mut PyObject,
87        arg5: *mut PyCompilerFlags,
88    ) -> *mut PyObject;
89    #[cfg(not(any(PyPy, GraalPy)))]
90    pub fn PyRun_FileExFlags(
91        fp: *mut FILE,
92        filename: *const c_char,
93        start: c_int,
94        globals: *mut PyObject,
95        locals: *mut PyObject,
96        closeit: c_int,
97        flags: *mut PyCompilerFlags,
98    ) -> *mut PyObject;
99
100    #[cfg(not(any(PyPy, GraalPy)))]
101    pub fn Py_CompileStringExFlags(
102        str: *const c_char,
103        filename: *const c_char,
104        start: c_int,
105        flags: *mut PyCompilerFlags,
106        optimize: c_int,
107    ) -> *mut PyObject;
108    #[cfg(not(Py_LIMITED_API))]
109    pub fn Py_CompileStringObject(
110        str: *const c_char,
111        filename: *mut PyObject,
112        start: c_int,
113        flags: *mut PyCompilerFlags,
114        optimize: c_int,
115    ) -> *mut PyObject;
116}
117
118#[inline]
119#[cfg(not(any(PyPy, GraalPy)))]
120pub unsafe fn Py_CompileString(string: *const c_char, p: *const c_char, s: c_int) -> *mut PyObject {
121    Py_CompileStringExFlags(string, p, s, core::ptr::null_mut(), -1)
122}
123
124#[inline]
125#[cfg(not(any(PyPy, GraalPy)))]
126pub unsafe fn Py_CompileStringFlags(
127    string: *const c_char,
128    p: *const c_char,
129    s: c_int,
130    f: *mut PyCompilerFlags,
131) -> *mut PyObject {
132    Py_CompileStringExFlags(string, p, s, f, -1)
133}
134
135extern_libpython! {
136    #[cfg_attr(PyPy, link_name = "PyPyRun_String")]
137    pub fn PyRun_String(
138        string: *const c_char,
139        s: c_int,
140        g: *mut PyObject,
141        l: *mut PyObject,
142    ) -> *mut PyObject;
143    #[cfg(not(any(PyPy, GraalPy)))]
144    pub fn PyRun_AnyFile(fp: *mut FILE, name: *const c_char) -> c_int;
145    #[cfg(not(any(PyPy, GraalPy)))]
146    pub fn PyRun_AnyFileEx(fp: *mut FILE, name: *const c_char, closeit: c_int) -> c_int;
147    #[cfg(not(any(PyPy, GraalPy)))]
148    pub fn PyRun_AnyFileFlags(
149        arg1: *mut FILE,
150        arg2: *const c_char,
151        arg3: *mut PyCompilerFlags,
152    ) -> c_int;
153    #[cfg_attr(PyPy, link_name = "PyPyRun_SimpleString")]
154    pub fn PyRun_SimpleString(s: *const c_char) -> c_int;
155    #[cfg(not(any(PyPy, GraalPy)))]
156    pub fn PyRun_SimpleFile(f: *mut FILE, p: *const c_char) -> c_int;
157    #[cfg(not(any(PyPy, GraalPy)))]
158    pub fn PyRun_SimpleFileEx(f: *mut FILE, p: *const c_char, c: c_int) -> c_int;
159    #[cfg(not(any(PyPy, GraalPy)))]
160    pub fn PyRun_InteractiveOne(f: *mut FILE, p: *const c_char) -> c_int;
161    #[cfg(not(any(PyPy, GraalPy)))]
162    pub fn PyRun_InteractiveLoop(f: *mut FILE, p: *const c_char) -> c_int;
163    #[cfg_attr(PyPy, link_name = "PyPyRun_File")]
164    pub fn PyRun_File(
165        fp: *mut FILE,
166        p: *const c_char,
167        s: c_int,
168        g: *mut PyObject,
169        l: *mut PyObject,
170    ) -> *mut PyObject;
171    #[cfg(not(any(PyPy, GraalPy)))]
172    pub fn PyRun_FileEx(
173        fp: *mut FILE,
174        p: *const c_char,
175        s: c_int,
176        g: *mut PyObject,
177        l: *mut PyObject,
178        c: c_int,
179    ) -> *mut PyObject;
180    #[cfg(not(any(PyPy, GraalPy)))]
181    pub fn PyRun_FileFlags(
182        fp: *mut FILE,
183        p: *const c_char,
184        s: c_int,
185        g: *mut PyObject,
186        l: *mut PyObject,
187        flags: *mut PyCompilerFlags,
188    ) -> *mut PyObject;
189}
190
191// skipped macro PyRun_String
192// skipped macro PyRun_AnyFile
193// skipped macro PyRun_AnyFileEx
194// skipped macro PyRun_AnyFileFlags
195
196extern_libpython! {
197    #[cfg(not(any(PyPy, GraalPy, Py_3_10)))]
198    #[cfg_attr(Py_3_9, deprecated(note = "Python 3.9"))]
199    pub fn PyParser_SimpleParseStringFlags(
200        arg1: *const c_char,
201        arg2: c_int,
202        arg3: c_int,
203    ) -> *mut _node;
204    #[cfg(not(any(PyPy, GraalPy, Py_3_10)))]
205    #[cfg_attr(Py_3_9, deprecated(note = "Python 3.9"))]
206    pub fn PyParser_SimpleParseStringFlagsFilename(
207        arg1: *const c_char,
208        arg2: *const c_char,
209        arg3: c_int,
210        arg4: c_int,
211    ) -> *mut _node;
212    #[cfg(not(any(PyPy, GraalPy, Py_3_10)))]
213    #[cfg_attr(Py_3_9, deprecated(note = "Python 3.9"))]
214    pub fn PyParser_SimpleParseFileFlags(
215        arg1: *mut FILE,
216        arg2: *const c_char,
217        arg3: c_int,
218        arg4: c_int,
219    ) -> *mut _node;
220
221    #[cfg(PyPy)]
222    #[cfg_attr(PyPy, link_name = "PyPy_CompileStringFlags")]
223    pub fn Py_CompileStringFlags(
224        string: *const c_char,
225        p: *const c_char,
226        s: c_int,
227        f: *mut PyCompilerFlags,
228    ) -> *mut PyObject;
229}