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
154extern "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
212extern "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}