blob: 57529072432ea75545e8a24da37c88282113b6c0 [file] [log] [blame]
Guido van Rossumf70e43a1991-02-19 12:39:46 +00001
Guido van Rossum3f5da241990-12-20 15:06:42 +00002/* Interfaces to parse and execute pieces of python code */
3
Fred Drake3cf4d2b2000-07-09 00:55:06 +00004#ifndef Py_PYTHONRUN_H
5#define Py_PYTHONRUN_H
6#ifdef __cplusplus
7extern "C" {
8#endif
Guido van Rossum57d8e3f1997-07-19 19:50:52 +00009
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000010#ifndef Py_LIMITED_API
11PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *);
Victor Stinner00676d12010-12-27 01:49:31 +000012PyAPI_FUNC(int) PyRun_AnyFileExFlags(
13 FILE *fp,
14 const char *filename, /* decoded from the filesystem encoding */
15 int closeit,
16 PyCompilerFlags *flags);
17PyAPI_FUNC(int) PyRun_SimpleFileExFlags(
18 FILE *fp,
19 const char *filename, /* decoded from the filesystem encoding */
20 int closeit,
21 PyCompilerFlags *flags);
22PyAPI_FUNC(int) PyRun_InteractiveOneFlags(
23 FILE *fp,
24 const char *filename, /* decoded from the filesystem encoding */
25 PyCompilerFlags *flags);
Victor Stinner95701bd2013-11-06 18:41:07 +010026PyAPI_FUNC(int) PyRun_InteractiveOneObject(
27 FILE *fp,
28 PyObject *filename,
29 PyCompilerFlags *flags);
Victor Stinner00676d12010-12-27 01:49:31 +000030PyAPI_FUNC(int) PyRun_InteractiveLoopFlags(
31 FILE *fp,
32 const char *filename, /* decoded from the filesystem encoding */
33 PyCompilerFlags *flags);
Guido van Rossum3f5da241990-12-20 15:06:42 +000034
Victor Stinner00676d12010-12-27 01:49:31 +000035PyAPI_FUNC(struct _mod *) PyParser_ASTFromString(
36 const char *s,
37 const char *filename, /* decoded from the filesystem encoding */
38 int start,
39 PyCompilerFlags *flags,
40 PyArena *arena);
Victor Stinner14e461d2013-08-26 22:28:21 +020041PyAPI_FUNC(struct _mod *) PyParser_ASTFromStringObject(
42 const char *s,
43 PyObject *filename,
44 int start,
45 PyCompilerFlags *flags,
46 PyArena *arena);
Victor Stinner00676d12010-12-27 01:49:31 +000047PyAPI_FUNC(struct _mod *) PyParser_ASTFromFile(
48 FILE *fp,
49 const char *filename, /* decoded from the filesystem encoding */
50 const char* enc,
51 int start,
Serhiy Storchakaef1585e2015-12-25 20:01:53 +020052 const char *ps1,
53 const char *ps2,
Victor Stinner00676d12010-12-27 01:49:31 +000054 PyCompilerFlags *flags,
55 int *errcode,
56 PyArena *arena);
Victor Stinner14e461d2013-08-26 22:28:21 +020057PyAPI_FUNC(struct _mod *) PyParser_ASTFromFileObject(
58 FILE *fp,
59 PyObject *filename,
60 const char* enc,
61 int start,
Serhiy Storchakaef1585e2015-12-25 20:01:53 +020062 const char *ps1,
63 const char *ps2,
Victor Stinner14e461d2013-08-26 22:28:21 +020064 PyCompilerFlags *flags,
65 int *errcode,
66 PyArena *arena);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000067#endif
68
69#ifndef PyParser_SimpleParseString
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000070#define PyParser_SimpleParseString(S, B) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000071 PyParser_SimpleParseStringFlags(S, B, 0)
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000072#define PyParser_SimpleParseFile(FP, S, B) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000073 PyParser_SimpleParseFileFlags(FP, S, B, 0)
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000074#endif
Pablo Galindo5b1a3112020-06-21 21:26:59 +010075
76#ifndef Py_BUILD_CORE
77Py_DEPRECATED(3.9)
Serhiy Storchaka34d0ac82016-12-27 14:57:39 +020078#endif
Pablo Galindo5b1a3112020-06-21 21:26:59 +010079PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlags(const char *, int, int);
80#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
81#ifndef Py_BUILD_CORE
82Py_DEPRECATED(3.9)
83#endif
84PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlagsFilename(const char *,
85 const char *,
86 int, int);
87#endif
88#ifndef Py_BUILD_CORE
89Py_DEPRECATED(3.9)
90#endif
91PyAPI_FUNC(struct _node *) PyParser_SimpleParseFileFlags(FILE *, const char *, int, int);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000092#ifndef Py_LIMITED_API
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000093PyAPI_FUNC(PyObject *) PyRun_StringFlags(const char *, int, PyObject *,
94 PyObject *, PyCompilerFlags *);
Guido van Rossum5b722181993-03-30 17:46:03 +000095
Victor Stinner00676d12010-12-27 01:49:31 +000096PyAPI_FUNC(PyObject *) PyRun_FileExFlags(
97 FILE *fp,
98 const char *filename, /* decoded from the filesystem encoding */
99 int start,
100 PyObject *globals,
101 PyObject *locals,
102 int closeit,
103 PyCompilerFlags *flags);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000104#endif
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000105
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000106#ifdef Py_LIMITED_API
Martin v. Löwis0d012f22010-12-04 12:00:49 +0000107PyAPI_FUNC(PyObject *) Py_CompileString(const char *, const char *, int);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000108#else
Georg Brandl8334fd92010-12-04 10:26:46 +0000109#define Py_CompileString(str, p, s) Py_CompileStringExFlags(str, p, s, NULL, -1)
110#define Py_CompileStringFlags(str, p, s, f) Py_CompileStringExFlags(str, p, s, f, -1)
Victor Stinner00676d12010-12-27 01:49:31 +0000111PyAPI_FUNC(PyObject *) Py_CompileStringExFlags(
112 const char *str,
113 const char *filename, /* decoded from the filesystem encoding */
114 int start,
115 PyCompilerFlags *flags,
116 int optimize);
Victor Stinner14e461d2013-08-26 22:28:21 +0200117PyAPI_FUNC(PyObject *) Py_CompileStringObject(
118 const char *str,
119 PyObject *filename, int start,
120 PyCompilerFlags *flags,
121 int optimize);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000122#endif
Victor Stinner00676d12010-12-27 01:49:31 +0000123PyAPI_FUNC(struct symtable *) Py_SymtableString(
124 const char *str,
125 const char *filename, /* decoded from the filesystem encoding */
126 int start);
Martin v. Löwis1c0689c2014-01-03 21:36:49 +0100127#ifndef Py_LIMITED_API
Dino Viehland41540692019-05-28 16:21:17 -0700128PyAPI_FUNC(const char *) _Py_SourceAsString(
129 PyObject *cmd,
130 const char *funcname,
Victor Stinner343ed0f2019-06-18 00:15:13 +0200131 const char *what,
Dino Viehland41540692019-05-28 16:21:17 -0700132 PyCompilerFlags *cf,
133 PyObject **cmd_copy);
134
Victor Stinner14e461d2013-08-26 22:28:21 +0200135PyAPI_FUNC(struct symtable *) Py_SymtableStringObject(
136 const char *str,
137 PyObject *filename,
138 int start);
Dino Viehland41540692019-05-28 16:21:17 -0700139
140PyAPI_FUNC(struct symtable *) _Py_SymtableStringObjectFlags(
141 const char *str,
142 PyObject *filename,
143 int start,
144 PyCompilerFlags *flags);
Martin v. Löwis1c0689c2014-01-03 21:36:49 +0100145#endif
Guido van Rossum3f5da241990-12-20 15:06:42 +0000146
Mark Hammond91a681d2002-08-12 07:21:58 +0000147PyAPI_FUNC(void) PyErr_Print(void);
148PyAPI_FUNC(void) PyErr_PrintEx(int);
149PyAPI_FUNC(void) PyErr_Display(PyObject *, PyObject *, PyObject *);
Guido van Rossumc6cf1dd1994-09-07 14:35:10 +0000150
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000151#ifndef Py_LIMITED_API
Victor Stinner343ed0f2019-06-18 00:15:13 +0200152/* A function flavor is also exported by libpython. It is required when
153 libpython is accessed directly rather than using header files which defines
154 macros below. On Windows, for example, PyAPI_FUNC() uses dllexport to
155 export functions in pythonXX.dll. */
156PyAPI_FUNC(PyObject *) PyRun_String(const char *str, int s, PyObject *g, PyObject *l);
157PyAPI_FUNC(int) PyRun_AnyFile(FILE *fp, const char *name);
158PyAPI_FUNC(int) PyRun_AnyFileEx(FILE *fp, const char *name, int closeit);
159PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *);
160PyAPI_FUNC(int) PyRun_SimpleString(const char *s);
161PyAPI_FUNC(int) PyRun_SimpleFile(FILE *f, const char *p);
162PyAPI_FUNC(int) PyRun_SimpleFileEx(FILE *f, const char *p, int c);
163PyAPI_FUNC(int) PyRun_InteractiveOne(FILE *f, const char *p);
164PyAPI_FUNC(int) PyRun_InteractiveLoop(FILE *f, const char *p);
165PyAPI_FUNC(PyObject *) PyRun_File(FILE *fp, const char *p, int s, PyObject *g, PyObject *l);
166PyAPI_FUNC(PyObject *) PyRun_FileEx(FILE *fp, const char *p, int s, PyObject *g, PyObject *l, int c);
167PyAPI_FUNC(PyObject *) PyRun_FileFlags(FILE *fp, const char *p, int s, PyObject *g, PyObject *l, PyCompilerFlags *flags);
168
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000169/* Use macros for a bunch of old variants */
170#define PyRun_String(str, s, g, l) PyRun_StringFlags(str, s, g, l, NULL)
171#define PyRun_AnyFile(fp, name) PyRun_AnyFileExFlags(fp, name, 0, NULL)
172#define PyRun_AnyFileEx(fp, name, closeit) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000173 PyRun_AnyFileExFlags(fp, name, closeit, NULL)
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000174#define PyRun_AnyFileFlags(fp, name, flags) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000175 PyRun_AnyFileExFlags(fp, name, 0, flags)
Mark Hammondf3ddaee2005-10-23 10:53:06 +0000176#define PyRun_SimpleString(s) PyRun_SimpleStringFlags(s, NULL)
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000177#define PyRun_SimpleFile(f, p) PyRun_SimpleFileExFlags(f, p, 0, NULL)
178#define PyRun_SimpleFileEx(f, p, c) PyRun_SimpleFileExFlags(f, p, c, NULL)
179#define PyRun_InteractiveOne(f, p) PyRun_InteractiveOneFlags(f, p, NULL)
180#define PyRun_InteractiveLoop(f, p) PyRun_InteractiveLoopFlags(f, p, NULL)
181#define PyRun_File(fp, p, s, g, l) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000182 PyRun_FileExFlags(fp, p, s, g, l, 0, NULL)
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000183#define PyRun_FileEx(fp, p, s, g, l, c) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000184 PyRun_FileExFlags(fp, p, s, g, l, c, NULL)
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000185#define PyRun_FileFlags(fp, p, s, g, l, flags) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000186 PyRun_FileExFlags(fp, p, s, g, l, 0, flags)
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000187#endif
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000188
Guido van Rossum3fb1aea1997-08-12 15:14:22 +0000189/* Stuff with no proper home (yet) */
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000190#ifndef Py_LIMITED_API
Serhiy Storchakac6792272013-10-19 21:03:34 +0300191PyAPI_FUNC(char *) PyOS_Readline(FILE *, FILE *, const char *);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000192#endif
Mark Hammond5d546672002-08-12 13:06:35 +0000193PyAPI_DATA(int) (*PyOS_InputHook)(void);
Serhiy Storchakac6792272013-10-19 21:03:34 +0300194PyAPI_DATA(char) *(*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, const char *);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000195#ifndef Py_LIMITED_API
Jason Tishler0d2a75c2004-08-09 15:02:30 +0000196PyAPI_DATA(PyThreadState*) _PyOS_ReadlineTState;
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000197#endif
Fredrik Lundh2f15b252000-08-27 19:15:31 +0000198
199/* Stack size, in "pointers" (so we get extra safety margins
200 on 64-bit platforms). On a 32-bit platform, this translates
Martin Panter4c359642016-05-08 13:53:41 +0000201 to an 8k margin. */
Fredrik Lundh2f15b252000-08-27 19:15:31 +0000202#define PYOS_STACK_MARGIN 2048
203
Paul Monson11efd792019-04-17 18:09:16 -0700204#if defined(WIN32) && !defined(MS_WIN64) && !defined(_M_ARM) && defined(_MSC_VER) && _MSC_VER >= 1300
Fredrik Lundh2f15b252000-08-27 19:15:31 +0000205/* Enable stack checking under Microsoft C */
206#define USE_STACKCHECK
207#endif
208
Jack Jansen275abb32000-08-07 21:00:42 +0000209#ifdef USE_STACKCHECK
Fredrik Lundh2f15b252000-08-27 19:15:31 +0000210/* Check that we aren't overflowing our stack */
Mark Hammond91a681d2002-08-12 07:21:58 +0000211PyAPI_FUNC(int) PyOS_CheckStack(void);
Jack Jansen275abb32000-08-07 21:00:42 +0000212#endif
Guido van Rossum3fb1aea1997-08-12 15:14:22 +0000213
Guido van Rossuma3309961993-07-28 09:05:47 +0000214#ifdef __cplusplus
215}
216#endif
217#endif /* !Py_PYTHONRUN_H */