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
191extern_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}