1use crate::object::*;
2#[cfg(not(any(PyPy, GraalPy, 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)))]
105 pub fn Py_CompileStringExFlags(
106 str: *const c_char,
107 filename: *const c_char,
108 start: c_int,
109 flags: *mut PyCompilerFlags,
110 optimize: c_int,
111 ) -> *mut PyObject;
112 pub fn Py_CompileStringObject(
113 str: *const c_char,
114 filename: *mut PyObject,
115 start: c_int,
116 flags: *mut PyCompilerFlags,
117 optimize: c_int,
118 ) -> *mut PyObject;
119}
120
121#[inline]
122#[cfg(not(any(PyPy, GraalPy)))]
123pub unsafe fn Py_CompileString(string: *const c_char, p: *const c_char, s: c_int) -> *mut PyObject {
124 Py_CompileStringExFlags(string, p, s, core::ptr::null_mut(), -1)
125}
126
127#[inline]
128#[cfg(not(any(PyPy, GraalPy)))]
129pub unsafe fn Py_CompileStringFlags(
130 string: *const c_char,
131 p: *const c_char,
132 s: c_int,
133 f: *mut PyCompilerFlags,
134) -> *mut PyObject {
135 Py_CompileStringExFlags(string, p, s, f, -1)
136}
137
138extern_libpython! {
139 #[cfg_attr(PyPy, link_name = "PyPyRun_String")]
140 pub fn PyRun_String(
141 string: *const c_char,
142 s: c_int,
143 g: *mut PyObject,
144 l: *mut PyObject,
145 ) -> *mut PyObject;
146 #[cfg(not(any(PyPy, GraalPy)))]
147 pub fn PyRun_AnyFile(fp: *mut FILE, name: *const c_char) -> c_int;
148 #[cfg(not(any(PyPy, GraalPy)))]
149 pub fn PyRun_AnyFileEx(fp: *mut FILE, name: *const c_char, closeit: c_int) -> c_int;
150 #[cfg(not(any(PyPy, GraalPy)))]
151 pub fn PyRun_AnyFileFlags(
152 arg1: *mut FILE,
153 arg2: *const c_char,
154 arg3: *mut PyCompilerFlags,
155 ) -> c_int;
156 #[cfg_attr(PyPy, link_name = "PyPyRun_SimpleString")]
157 pub fn PyRun_SimpleString(s: *const c_char) -> c_int;
158 #[cfg(not(any(PyPy, GraalPy)))]
159 pub fn PyRun_SimpleFile(f: *mut FILE, p: *const c_char) -> c_int;
160 #[cfg(not(any(PyPy, GraalPy)))]
161 pub fn PyRun_SimpleFileEx(f: *mut FILE, p: *const c_char, c: c_int) -> c_int;
162 #[cfg(not(any(PyPy, GraalPy)))]
163 pub fn PyRun_InteractiveOne(f: *mut FILE, p: *const c_char) -> c_int;
164 #[cfg(not(any(PyPy, GraalPy)))]
165 pub fn PyRun_InteractiveLoop(f: *mut FILE, p: *const c_char) -> c_int;
166 #[cfg_attr(PyPy, link_name = "PyPyRun_File")]
167 pub fn PyRun_File(
168 fp: *mut FILE,
169 p: *const c_char,
170 s: c_int,
171 g: *mut PyObject,
172 l: *mut PyObject,
173 ) -> *mut PyObject;
174 #[cfg(not(any(PyPy, GraalPy)))]
175 pub fn PyRun_FileEx(
176 fp: *mut FILE,
177 p: *const c_char,
178 s: c_int,
179 g: *mut PyObject,
180 l: *mut PyObject,
181 c: c_int,
182 ) -> *mut PyObject;
183 #[cfg(not(any(PyPy, GraalPy)))]
184 pub fn PyRun_FileFlags(
185 fp: *mut FILE,
186 p: *const c_char,
187 s: c_int,
188 g: *mut PyObject,
189 l: *mut PyObject,
190 flags: *mut PyCompilerFlags,
191 ) -> *mut PyObject;
192}
193
194extern_libpython! {
200 #[cfg(not(any(PyPy, GraalPy, Py_3_10)))]
201 #[deprecated(note = "Python 3.9")]
202 pub fn PyParser_SimpleParseStringFlags(
203 arg1: *const c_char,
204 arg2: c_int,
205 arg3: c_int,
206 ) -> *mut _node;
207 #[cfg(not(any(PyPy, GraalPy, Py_3_10)))]
208 #[deprecated(note = "Python 3.9")]
209 pub fn PyParser_SimpleParseStringFlagsFilename(
210 arg1: *const c_char,
211 arg2: *const c_char,
212 arg3: c_int,
213 arg4: c_int,
214 ) -> *mut _node;
215 #[cfg(not(any(PyPy, GraalPy, Py_3_10)))]
216 #[deprecated(note = "Python 3.9")]
217 pub fn PyParser_SimpleParseFileFlags(
218 arg1: *mut FILE,
219 arg2: *const c_char,
220 arg3: c_int,
221 arg4: c_int,
222 ) -> *mut _node;
223
224 #[cfg(PyPy)]
225 #[cfg_attr(PyPy, link_name = "PyPy_CompileStringFlags")]
226 pub fn Py_CompileStringFlags(
227 string: *const c_char,
228 p: *const c_char,
229 s: c_int,
230 f: *mut PyCompilerFlags,
231 ) -> *mut PyObject;
232}