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