1
2/* Interfaces to configure, query, create & destroy the Python runtime */
3
4#ifndef Py_PYLIFECYCLE_H
5#define Py_PYLIFECYCLE_H
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10PyAPI_FUNC(void) Py_SetProgramName(wchar_t *);
11PyAPI_FUNC(wchar_t *) Py_GetProgramName(void);
12
13PyAPI_FUNC(void) Py_SetPythonHome(wchar_t *);
14PyAPI_FUNC(wchar_t *) Py_GetPythonHome(void);
15
16#ifndef Py_LIMITED_API
17/* Only used by applications that embed the interpreter and need to
18 * override the standard encoding determination mechanism
19 */
20PyAPI_FUNC(int) Py_SetStandardStreamEncoding(const char *encoding,
21 const char *errors);
22#endif
23
24PyAPI_FUNC(void) Py_Initialize(void);
25PyAPI_FUNC(void) Py_InitializeEx(int);
26#ifndef Py_LIMITED_API
27PyAPI_FUNC(void) _Py_InitializeEx_Private(int, int);
28#endif
29PyAPI_FUNC(void) Py_Finalize(void);
30PyAPI_FUNC(int) Py_IsInitialized(void);
31PyAPI_FUNC(PyThreadState *) Py_NewInterpreter(void);
32PyAPI_FUNC(void) Py_EndInterpreter(PyThreadState *);
33
34
35/* Py_PyAtExit is for the atexit module, Py_AtExit is for low-level
36 * exit functions.
37 */
38#ifndef Py_LIMITED_API
39PyAPI_FUNC(void) _Py_PyAtExit(void (*func)(void));
40#endif
41PyAPI_FUNC(int) Py_AtExit(void (*func)(void));
42
43PyAPI_FUNC(void) Py_Exit(int);
44
45/* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. */
46#ifndef Py_LIMITED_API
47PyAPI_FUNC(void) _Py_RestoreSignals(void);
48
49PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *);
50#endif
51
52/* Bootstrap __main__ (defined in Modules/main.c) */
53PyAPI_FUNC(int) Py_Main(int argc, wchar_t **argv);
54
55/* In getpath.c */
56PyAPI_FUNC(wchar_t *) Py_GetProgramFullPath(void);
57PyAPI_FUNC(wchar_t *) Py_GetPrefix(void);
58PyAPI_FUNC(wchar_t *) Py_GetExecPrefix(void);
59PyAPI_FUNC(wchar_t *) Py_GetPath(void);
60PyAPI_FUNC(void) Py_SetPath(const wchar_t *);
61#ifdef MS_WINDOWS
62int _Py_CheckPython3();
63#endif
64
65/* In their own files */
66PyAPI_FUNC(const char *) Py_GetVersion(void);
67PyAPI_FUNC(const char *) Py_GetPlatform(void);
68PyAPI_FUNC(const char *) Py_GetCopyright(void);
69PyAPI_FUNC(const char *) Py_GetCompiler(void);
70PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
71#ifndef Py_LIMITED_API
72PyAPI_FUNC(const char *) _Py_hgidentifier(void);
73PyAPI_FUNC(const char *) _Py_hgversion(void);
74#endif
75
76/* Internal -- various one-time initializations */
77#ifndef Py_LIMITED_API
78PyAPI_FUNC(PyObject *) _PyBuiltin_Init(void);
79PyAPI_FUNC(PyObject *) _PySys_Init(void);
80PyAPI_FUNC(void) _PyImport_Init(void);
81PyAPI_FUNC(void) _PyExc_Init(PyObject * bltinmod);
82PyAPI_FUNC(void) _PyImportHooks_Init(void);
83PyAPI_FUNC(int) _PyFrame_Init(void);
84PyAPI_FUNC(int) _PyFloat_Init(void);
85PyAPI_FUNC(int) PyByteArray_Init(void);
86PyAPI_FUNC(void) _PyRandom_Init(void);
87#endif
88
89/* Various internal finalizers */
90#ifndef Py_LIMITED_API
91PyAPI_FUNC(void) _PyExc_Fini(void);
92PyAPI_FUNC(void) _PyImport_Fini(void);
93PyAPI_FUNC(void) PyMethod_Fini(void);
94PyAPI_FUNC(void) PyFrame_Fini(void);
95PyAPI_FUNC(void) PyCFunction_Fini(void);
96PyAPI_FUNC(void) PyDict_Fini(void);
97PyAPI_FUNC(void) PyTuple_Fini(void);
98PyAPI_FUNC(void) PyList_Fini(void);
99PyAPI_FUNC(void) PySet_Fini(void);
100PyAPI_FUNC(void) PyBytes_Fini(void);
101PyAPI_FUNC(void) PyByteArray_Fini(void);
102PyAPI_FUNC(void) PyFloat_Fini(void);
103PyAPI_FUNC(void) PyOS_FiniInterrupts(void);
104PyAPI_FUNC(void) _PyGC_DumpShutdownStats(void);
105PyAPI_FUNC(void) _PyGC_Fini(void);
106PyAPI_FUNC(void) PySlice_Fini(void);
107PyAPI_FUNC(void) _PyType_Fini(void);
108PyAPI_FUNC(void) _PyRandom_Fini(void);
109
110PyAPI_DATA(PyThreadState *) _Py_Finalizing;
111#endif
112
113/* Signals */
114typedef void (*PyOS_sighandler_t)(int);
115PyAPI_FUNC(PyOS_sighandler_t) PyOS_getsig(int);
116PyAPI_FUNC(PyOS_sighandler_t) PyOS_setsig(int, PyOS_sighandler_t);
117
118/* Random */
119PyAPI_FUNC(int) _PyOS_URandom (void *buffer, Py_ssize_t size);
120
121#ifdef __cplusplus
122}
123#endif
124#endif /* !Py_PYLIFECYCLE_H */
125