blob: 46091e09216330bb39b8bb68a8d718dea40cd33f [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
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000075PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlags(const char *, int,
Eli Bendersky08131682012-06-03 08:07:47 +030076 int);
Serhiy Storchaka34d0ac82016-12-27 14:57:39 +020077#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
Eli Bendersky08131682012-06-03 08:07:47 +030078PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlagsFilename(const char *,
79 const char *,
80 int, int);
Serhiy Storchaka34d0ac82016-12-27 14:57:39 +020081#endif
Martin v. Löwis95292d62002-12-11 14:04:59 +000082PyAPI_FUNC(struct _node *) PyParser_SimpleParseFileFlags(FILE *, const char *,
Eli Bendersky08131682012-06-03 08:07:47 +030083 int, int);
Guido van Rossum3f5da241990-12-20 15:06:42 +000084
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000085#ifndef Py_LIMITED_API
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000086PyAPI_FUNC(PyObject *) PyRun_StringFlags(const char *, int, PyObject *,
87 PyObject *, PyCompilerFlags *);
Guido van Rossum5b722181993-03-30 17:46:03 +000088
Victor Stinner00676d12010-12-27 01:49:31 +000089PyAPI_FUNC(PyObject *) PyRun_FileExFlags(
90 FILE *fp,
91 const char *filename, /* decoded from the filesystem encoding */
92 int start,
93 PyObject *globals,
94 PyObject *locals,
95 int closeit,
96 PyCompilerFlags *flags);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000097#endif
Jeremy Hylton3e0055f2005-10-20 19:59:25 +000098
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000099#ifdef Py_LIMITED_API
Martin v. Löwis0d012f22010-12-04 12:00:49 +0000100PyAPI_FUNC(PyObject *) Py_CompileString(const char *, const char *, int);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000101#else
Georg Brandl8334fd92010-12-04 10:26:46 +0000102#define Py_CompileString(str, p, s) Py_CompileStringExFlags(str, p, s, NULL, -1)
103#define Py_CompileStringFlags(str, p, s, f) Py_CompileStringExFlags(str, p, s, f, -1)
Victor Stinner00676d12010-12-27 01:49:31 +0000104PyAPI_FUNC(PyObject *) Py_CompileStringExFlags(
105 const char *str,
106 const char *filename, /* decoded from the filesystem encoding */
107 int start,
108 PyCompilerFlags *flags,
109 int optimize);
Victor Stinner14e461d2013-08-26 22:28:21 +0200110PyAPI_FUNC(PyObject *) Py_CompileStringObject(
111 const char *str,
112 PyObject *filename, int start,
113 PyCompilerFlags *flags,
114 int optimize);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000115#endif
Victor Stinner00676d12010-12-27 01:49:31 +0000116PyAPI_FUNC(struct symtable *) Py_SymtableString(
117 const char *str,
118 const char *filename, /* decoded from the filesystem encoding */
119 int start);
Martin v. Löwis1c0689c2014-01-03 21:36:49 +0100120#ifndef Py_LIMITED_API
Dino Viehland41540692019-05-28 16:21:17 -0700121PyAPI_FUNC(const char *) _Py_SourceAsString(
122 PyObject *cmd,
123 const char *funcname,
Victor Stinner343ed0f2019-06-18 00:15:13 +0200124 const char *what,
Dino Viehland41540692019-05-28 16:21:17 -0700125 PyCompilerFlags *cf,
126 PyObject **cmd_copy);
127
Victor Stinner14e461d2013-08-26 22:28:21 +0200128PyAPI_FUNC(struct symtable *) Py_SymtableStringObject(
129 const char *str,
130 PyObject *filename,
131 int start);
Dino Viehland41540692019-05-28 16:21:17 -0700132
133PyAPI_FUNC(struct symtable *) _Py_SymtableStringObjectFlags(
134 const char *str,
135 PyObject *filename,
136 int start,
137 PyCompilerFlags *flags);
Martin v. Löwis1c0689c2014-01-03 21:36:49 +0100138#endif
Guido van Rossum3f5da241990-12-20 15:06:42 +0000139
Mark Hammond91a681d2002-08-12 07:21:58 +0000140PyAPI_FUNC(void) PyErr_Print(void);
141PyAPI_FUNC(void) PyErr_PrintEx(int);
142PyAPI_FUNC(void) PyErr_Display(PyObject *, PyObject *, PyObject *);
Guido van Rossumc6cf1dd1994-09-07 14:35:10 +0000143
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000144#ifndef Py_LIMITED_API
Victor Stinner343ed0f2019-06-18 00:15:13 +0200145/* A function flavor is also exported by libpython. It is required when
146 libpython is accessed directly rather than using header files which defines
147 macros below. On Windows, for example, PyAPI_FUNC() uses dllexport to
148 export functions in pythonXX.dll. */
149PyAPI_FUNC(PyObject *) PyRun_String(const char *str, int s, PyObject *g, PyObject *l);
150PyAPI_FUNC(int) PyRun_AnyFile(FILE *fp, const char *name);
151PyAPI_FUNC(int) PyRun_AnyFileEx(FILE *fp, const char *name, int closeit);
152PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *);
153PyAPI_FUNC(int) PyRun_SimpleString(const char *s);
154PyAPI_FUNC(int) PyRun_SimpleFile(FILE *f, const char *p);
155PyAPI_FUNC(int) PyRun_SimpleFileEx(FILE *f, const char *p, int c);
156PyAPI_FUNC(int) PyRun_InteractiveOne(FILE *f, const char *p);
157PyAPI_FUNC(int) PyRun_InteractiveLoop(FILE *f, const char *p);
158PyAPI_FUNC(PyObject *) PyRun_File(FILE *fp, const char *p, int s, PyObject *g, PyObject *l);
159PyAPI_FUNC(PyObject *) PyRun_FileEx(FILE *fp, const char *p, int s, PyObject *g, PyObject *l, int c);
160PyAPI_FUNC(PyObject *) PyRun_FileFlags(FILE *fp, const char *p, int s, PyObject *g, PyObject *l, PyCompilerFlags *flags);
161
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000162/* Use macros for a bunch of old variants */
163#define PyRun_String(str, s, g, l) PyRun_StringFlags(str, s, g, l, NULL)
164#define PyRun_AnyFile(fp, name) PyRun_AnyFileExFlags(fp, name, 0, NULL)
165#define PyRun_AnyFileEx(fp, name, closeit) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000166 PyRun_AnyFileExFlags(fp, name, closeit, NULL)
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000167#define PyRun_AnyFileFlags(fp, name, flags) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000168 PyRun_AnyFileExFlags(fp, name, 0, flags)
Mark Hammondf3ddaee2005-10-23 10:53:06 +0000169#define PyRun_SimpleString(s) PyRun_SimpleStringFlags(s, NULL)
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000170#define PyRun_SimpleFile(f, p) PyRun_SimpleFileExFlags(f, p, 0, NULL)
171#define PyRun_SimpleFileEx(f, p, c) PyRun_SimpleFileExFlags(f, p, c, NULL)
172#define PyRun_InteractiveOne(f, p) PyRun_InteractiveOneFlags(f, p, NULL)
173#define PyRun_InteractiveLoop(f, p) PyRun_InteractiveLoopFlags(f, p, NULL)
174#define PyRun_File(fp, p, s, g, l) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000175 PyRun_FileExFlags(fp, p, s, g, l, 0, NULL)
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000176#define PyRun_FileEx(fp, p, s, g, l, c) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000177 PyRun_FileExFlags(fp, p, s, g, l, c, NULL)
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000178#define PyRun_FileFlags(fp, p, s, g, l, flags) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000179 PyRun_FileExFlags(fp, p, s, g, l, 0, flags)
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000180#endif
Jeremy Hylton3e0055f2005-10-20 19:59:25 +0000181
Guido van Rossum3fb1aea1997-08-12 15:14:22 +0000182/* Stuff with no proper home (yet) */
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000183#ifndef Py_LIMITED_API
Serhiy Storchakac6792272013-10-19 21:03:34 +0300184PyAPI_FUNC(char *) PyOS_Readline(FILE *, FILE *, const char *);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000185#endif
Mark Hammond5d546672002-08-12 13:06:35 +0000186PyAPI_DATA(int) (*PyOS_InputHook)(void);
Serhiy Storchakac6792272013-10-19 21:03:34 +0300187PyAPI_DATA(char) *(*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, const char *);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000188#ifndef Py_LIMITED_API
Jason Tishler0d2a75c2004-08-09 15:02:30 +0000189PyAPI_DATA(PyThreadState*) _PyOS_ReadlineTState;
Martin v. Löwis4d0d4712010-12-03 20:14:31 +0000190#endif
Fredrik Lundh2f15b252000-08-27 19:15:31 +0000191
192/* Stack size, in "pointers" (so we get extra safety margins
193 on 64-bit platforms). On a 32-bit platform, this translates
Martin Panter4c359642016-05-08 13:53:41 +0000194 to an 8k margin. */
Fredrik Lundh2f15b252000-08-27 19:15:31 +0000195#define PYOS_STACK_MARGIN 2048
196
Paul Monson11efd792019-04-17 18:09:16 -0700197#if defined(WIN32) && !defined(MS_WIN64) && !defined(_M_ARM) && defined(_MSC_VER) && _MSC_VER >= 1300
Fredrik Lundh2f15b252000-08-27 19:15:31 +0000198/* Enable stack checking under Microsoft C */
199#define USE_STACKCHECK
200#endif
201
Jack Jansen275abb32000-08-07 21:00:42 +0000202#ifdef USE_STACKCHECK
Fredrik Lundh2f15b252000-08-27 19:15:31 +0000203/* Check that we aren't overflowing our stack */
Mark Hammond91a681d2002-08-12 07:21:58 +0000204PyAPI_FUNC(int) PyOS_CheckStack(void);
Jack Jansen275abb32000-08-07 21:00:42 +0000205#endif
Guido van Rossum3fb1aea1997-08-12 15:14:22 +0000206
Guido van Rossuma3309961993-07-28 09:05:47 +0000207#ifdef __cplusplus
208}
209#endif
210#endif /* !Py_PYTHONRUN_H */