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