17db96d56Sopenharmony_ci#ifndef Py_INTERNAL_COMPILE_H
27db96d56Sopenharmony_ci#define Py_INTERNAL_COMPILE_H
37db96d56Sopenharmony_ci#ifdef __cplusplus
47db96d56Sopenharmony_ciextern "C" {
57db96d56Sopenharmony_ci#endif
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ci#ifndef Py_BUILD_CORE
87db96d56Sopenharmony_ci#  error "this header requires Py_BUILD_CORE define"
97db96d56Sopenharmony_ci#endif
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_cistruct _arena;   // Type defined in pycore_pyarena.h
127db96d56Sopenharmony_cistruct _mod;     // Type defined in pycore_ast.h
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ci// Export the symbol for test_peg_generator (built as a library)
157db96d56Sopenharmony_ciPyAPI_FUNC(PyCodeObject*) _PyAST_Compile(
167db96d56Sopenharmony_ci    struct _mod *mod,
177db96d56Sopenharmony_ci    PyObject *filename,
187db96d56Sopenharmony_ci    PyCompilerFlags *flags,
197db96d56Sopenharmony_ci    int optimize,
207db96d56Sopenharmony_ci    struct _arena *arena);
217db96d56Sopenharmony_ciextern PyFutureFeatures* _PyFuture_FromAST(
227db96d56Sopenharmony_ci    struct _mod * mod,
237db96d56Sopenharmony_ci    PyObject *filename
247db96d56Sopenharmony_ci    );
257db96d56Sopenharmony_ci
267db96d56Sopenharmony_ciextern PyObject* _Py_Mangle(PyObject *p, PyObject *name);
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_citypedef struct {
297db96d56Sopenharmony_ci    int optimize;
307db96d56Sopenharmony_ci    int ff_features;
317db96d56Sopenharmony_ci
327db96d56Sopenharmony_ci    int recursion_depth;            /* current recursion depth */
337db96d56Sopenharmony_ci    int recursion_limit;            /* recursion limit */
347db96d56Sopenharmony_ci} _PyASTOptimizeState;
357db96d56Sopenharmony_ci
367db96d56Sopenharmony_ciextern int _PyAST_Optimize(
377db96d56Sopenharmony_ci    struct _mod *,
387db96d56Sopenharmony_ci    struct _arena *arena,
397db96d56Sopenharmony_ci    _PyASTOptimizeState *state);
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ci#ifdef __cplusplus
427db96d56Sopenharmony_ci}
437db96d56Sopenharmony_ci#endif
447db96d56Sopenharmony_ci#endif /* !Py_INTERNAL_COMPILE_H */
45