1991-02-19 13:39:46 +01:00
|
|
|
|
1990-12-20 16:06:42 +01:00
|
|
|
/* Interfaces to parse and execute pieces of python code */
|
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
#ifndef Py_PYTHONRUN_H
|
|
|
|
#define Py_PYTHONRUN_H
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2001-08-10 23:38:04 +02:00
|
|
|
#define PyCF_MASK (CO_GENERATOR_ALLOWED | CO_FUTURE_DIVISION)
|
2001-08-17 22:47:47 +02:00
|
|
|
#define PyCF_MASK_OBSOLETE (CO_NESTED)
|
|
|
|
|
2001-03-01 23:59:14 +01:00
|
|
|
typedef struct {
|
2001-08-10 23:38:04 +02:00
|
|
|
int cf_flags; /* bitmask of CO_xxx flags relevant to future */
|
2001-03-01 23:59:14 +01:00
|
|
|
} PyCompilerFlags;
|
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(void) Py_SetProgramName(char *);
|
|
|
|
DL_IMPORT(char *) Py_GetProgramName(void);
|
1997-07-19 21:50:52 +02:00
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(void) Py_SetPythonHome(char *);
|
|
|
|
DL_IMPORT(char *) Py_GetPythonHome(void);
|
1998-02-06 23:28:05 +01:00
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(void) Py_Initialize(void);
|
|
|
|
DL_IMPORT(void) Py_Finalize(void);
|
|
|
|
DL_IMPORT(int) Py_IsInitialized(void);
|
|
|
|
DL_IMPORT(PyThreadState *) Py_NewInterpreter(void);
|
|
|
|
DL_IMPORT(void) Py_EndInterpreter(PyThreadState *);
|
1990-12-20 16:06:42 +01:00
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(int) PyRun_AnyFile(FILE *, char *);
|
2000-08-27 21:21:52 +02:00
|
|
|
DL_IMPORT(int) PyRun_AnyFileEx(FILE *, char *, int);
|
1990-12-20 16:06:42 +01:00
|
|
|
|
2001-03-22 03:47:58 +01:00
|
|
|
DL_IMPORT(int) PyRun_AnyFileFlags(FILE *, char *, PyCompilerFlags *);
|
|
|
|
DL_IMPORT(int) PyRun_AnyFileExFlags(FILE *, char *, int, PyCompilerFlags *);
|
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(int) PyRun_SimpleString(char *);
|
Add warning mode for classic division, almost exactly as specified in
PEP 238. Changes:
- add a new flag variable Py_DivisionWarningFlag, declared in
pydebug.h, defined in object.c, set in main.c, and used in
{int,long,float,complex}object.c. When this flag is set, the
classic division operator issues a DeprecationWarning message.
- add a new API PyRun_SimpleStringFlags() to match
PyRun_SimpleString(). The main() function calls this so that
commands run with -c can also benefit from -Dnew.
- While I was at it, I changed the usage message in main() somewhat:
alphabetized the options, split it in *four* parts to fit in under
512 bytes (not that I still believe this is necessary -- doc strings
elsewhere are much longer), and perhaps most visibly, don't display
the full list of options on each command line error. Instead, the
full list is only displayed when -h is used, and otherwise a brief
reminder of -h is displayed. When -h is used, write to stdout so
that you can do `python -h | more'.
Notes:
- I don't want to use the -W option to control whether the classic
division warning is issued or not, because the machinery to decide
whether to display the warning or not is very expensive (it involves
calling into the warnings.py module). You can use -Werror to turn
the warnings into exceptions though.
- The -Dnew option doesn't select future division for all of the
program -- only for the __main__ module. I don't know if I'll ever
change this -- it would require changes to the .pyc file magic
number to do it right, and a more global notion of compiler flags.
- You can usefully combine -Dwarn and -Dnew: this gives the __main__
module new division, and warns about classic division everywhere
else.
2001-08-31 19:40:15 +02:00
|
|
|
DL_IMPORT(int) PyRun_SimpleStringFlags(char *, PyCompilerFlags *);
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(int) PyRun_SimpleFile(FILE *, char *);
|
2000-08-27 21:21:52 +02:00
|
|
|
DL_IMPORT(int) PyRun_SimpleFileEx(FILE *, char *, int);
|
2001-03-22 03:47:58 +01:00
|
|
|
DL_IMPORT(int) PyRun_SimpleFileExFlags(FILE *, char *, int, PyCompilerFlags *);
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(int) PyRun_InteractiveOne(FILE *, char *);
|
2001-03-01 23:59:14 +01:00
|
|
|
DL_IMPORT(int) PyRun_InteractiveOneFlags(FILE *, char *, PyCompilerFlags *);
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(int) PyRun_InteractiveLoop(FILE *, char *);
|
2001-03-22 03:47:58 +01:00
|
|
|
DL_IMPORT(int) PyRun_InteractiveLoopFlags(FILE *, char *, PyCompilerFlags *);
|
1990-12-20 16:06:42 +01:00
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(struct _node *) PyParser_SimpleParseString(char *, int);
|
|
|
|
DL_IMPORT(struct _node *) PyParser_SimpleParseFile(FILE *, char *, int);
|
2001-07-16 07:37:24 +02:00
|
|
|
DL_IMPORT(struct _node *) PyParser_SimpleParseStringFlags(char *, int, int);
|
|
|
|
DL_IMPORT(struct _node *) PyParser_SimpleParseFileFlags(FILE *, char *,
|
|
|
|
int, int);
|
1990-12-20 16:06:42 +01:00
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(PyObject *) PyRun_String(char *, int, PyObject *, PyObject *);
|
|
|
|
DL_IMPORT(PyObject *) PyRun_File(FILE *, char *, int, PyObject *, PyObject *);
|
2000-08-27 21:21:52 +02:00
|
|
|
DL_IMPORT(PyObject *) PyRun_FileEx(FILE *, char *, int,
|
|
|
|
PyObject *, PyObject *, int);
|
2001-03-22 03:47:58 +01:00
|
|
|
DL_IMPORT(PyObject *) PyRun_StringFlags(char *, int, PyObject *, PyObject *,
|
|
|
|
PyCompilerFlags *);
|
|
|
|
DL_IMPORT(PyObject *) PyRun_FileFlags(FILE *, char *, int, PyObject *,
|
|
|
|
PyObject *, PyCompilerFlags *);
|
|
|
|
DL_IMPORT(PyObject *) PyRun_FileExFlags(FILE *, char *, int, PyObject *,
|
|
|
|
PyObject *, int, PyCompilerFlags *);
|
1990-12-20 16:06:42 +01:00
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(PyObject *) Py_CompileString(char *, char *, int);
|
2001-03-22 03:47:58 +01:00
|
|
|
DL_IMPORT(PyObject *) Py_CompileStringFlags(char *, char *, int,
|
|
|
|
PyCompilerFlags *);
|
2001-02-02 19:19:15 +01:00
|
|
|
DL_IMPORT(struct symtable *) Py_SymtableString(char *, char *, int);
|
1993-03-30 19:46:03 +02:00
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(void) PyErr_Print(void);
|
|
|
|
DL_IMPORT(void) PyErr_PrintEx(int);
|
2001-03-23 03:46:52 +01:00
|
|
|
DL_IMPORT(void) PyErr_Display(PyObject *, PyObject *, PyObject *);
|
1990-12-20 16:06:42 +01:00
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(int) Py_AtExit(void (*func)(void));
|
1994-09-07 16:35:10 +02:00
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(void) Py_Exit(int);
|
1993-07-28 11:05:47 +02:00
|
|
|
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(int) Py_FdIsInteractive(FILE *, char *);
|
1997-02-14 20:51:34 +01:00
|
|
|
|
1997-07-19 21:50:52 +02:00
|
|
|
/* In getpath.c */
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(char *) Py_GetProgramFullPath(void);
|
|
|
|
DL_IMPORT(char *) Py_GetPrefix(void);
|
|
|
|
DL_IMPORT(char *) Py_GetExecPrefix(void);
|
|
|
|
DL_IMPORT(char *) Py_GetPath(void);
|
1997-07-19 21:50:52 +02:00
|
|
|
|
|
|
|
/* In their own files */
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(const char *) Py_GetVersion(void);
|
|
|
|
DL_IMPORT(const char *) Py_GetPlatform(void);
|
|
|
|
DL_IMPORT(const char *) Py_GetCopyright(void);
|
|
|
|
DL_IMPORT(const char *) Py_GetCompiler(void);
|
|
|
|
DL_IMPORT(const char *) Py_GetBuildInfo(void);
|
1997-07-19 21:50:52 +02:00
|
|
|
|
1997-08-02 04:56:48 +02:00
|
|
|
/* Internal -- various one-time initializations */
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(PyObject *) _PyBuiltin_Init(void);
|
|
|
|
DL_IMPORT(PyObject *) _PySys_Init(void);
|
|
|
|
DL_IMPORT(void) _PyImport_Init(void);
|
2001-08-02 06:15:00 +02:00
|
|
|
DL_IMPORT(void) _PyExc_Init(void);
|
1997-08-02 04:56:48 +02:00
|
|
|
|
1997-08-12 16:57:21 +02:00
|
|
|
/* Various internal finalizers */
|
2001-08-02 06:15:00 +02:00
|
|
|
DL_IMPORT(void) _PyExc_Fini(void);
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(void) _PyImport_Fini(void);
|
|
|
|
DL_IMPORT(void) PyMethod_Fini(void);
|
|
|
|
DL_IMPORT(void) PyFrame_Fini(void);
|
|
|
|
DL_IMPORT(void) PyCFunction_Fini(void);
|
|
|
|
DL_IMPORT(void) PyTuple_Fini(void);
|
|
|
|
DL_IMPORT(void) PyString_Fini(void);
|
|
|
|
DL_IMPORT(void) PyInt_Fini(void);
|
|
|
|
DL_IMPORT(void) PyFloat_Fini(void);
|
|
|
|
DL_IMPORT(void) PyOS_FiniInterrupts(void);
|
1997-08-12 16:57:21 +02:00
|
|
|
|
1997-08-12 17:14:22 +02:00
|
|
|
/* Stuff with no proper home (yet) */
|
2000-07-09 02:55:06 +02:00
|
|
|
DL_IMPORT(char *) PyOS_Readline(char *);
|
|
|
|
extern DL_IMPORT(int) (*PyOS_InputHook)(void);
|
|
|
|
extern DL_IMPORT(char) *(*PyOS_ReadlineFunctionPointer)(char *);
|
2000-08-27 21:15:31 +02:00
|
|
|
|
|
|
|
/* Stack size, in "pointers" (so we get extra safety margins
|
|
|
|
on 64-bit platforms). On a 32-bit platform, this translates
|
|
|
|
to a 8k margin. */
|
|
|
|
#define PYOS_STACK_MARGIN 2048
|
|
|
|
|
2000-10-11 19:18:11 +02:00
|
|
|
#if defined(WIN32) && !defined(MS_WIN64) && defined(_MSC_VER)
|
2000-08-27 21:15:31 +02:00
|
|
|
/* Enable stack checking under Microsoft C */
|
|
|
|
#define USE_STACKCHECK
|
|
|
|
#endif
|
|
|
|
|
2000-08-07 23:00:42 +02:00
|
|
|
#ifdef USE_STACKCHECK
|
2000-08-27 21:15:31 +02:00
|
|
|
/* Check that we aren't overflowing our stack */
|
|
|
|
DL_IMPORT(int) PyOS_CheckStack(void);
|
2000-08-07 23:00:42 +02:00
|
|
|
#endif
|
1997-08-12 17:14:22 +02:00
|
|
|
|
2000-09-16 18:31:31 +02:00
|
|
|
/* Signals */
|
|
|
|
typedef void (*PyOS_sighandler_t)(int);
|
|
|
|
DL_IMPORT(PyOS_sighandler_t) PyOS_getsig(int);
|
|
|
|
DL_IMPORT(PyOS_sighandler_t) PyOS_setsig(int, PyOS_sighandler_t);
|
|
|
|
|
|
|
|
|
1993-07-28 11:05:47 +02:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif /* !Py_PYTHONRUN_H */
|