blob: 0d609ec234479502966cce5c4e45b6eabece19cd [file] [log] [blame]
Nick Coghland6009512014-11-20 21:39:37 +10001
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);
Eric Snow1abcf672017-05-23 21:46:51 -070022
23/* PEP 432 Multi-phase initialization API (Private while provisional!) */
24PyAPI_FUNC(void) _Py_InitializeCore(const _PyCoreConfig *);
25PyAPI_FUNC(int) _Py_IsCoreInitialized(void);
Eric Snowc7ec9982017-05-23 23:00:52 -070026PyAPI_FUNC(int) _Py_ReadMainInterpreterConfig(_PyMainInterpreterConfig *);
27PyAPI_FUNC(int) _Py_InitializeMainInterpreter(const _PyMainInterpreterConfig *);
Nick Coghland6009512014-11-20 21:39:37 +100028#endif
29
Eric Snow1abcf672017-05-23 21:46:51 -070030/* Initialization and finalization */
Nick Coghland6009512014-11-20 21:39:37 +100031PyAPI_FUNC(void) Py_Initialize(void);
32PyAPI_FUNC(void) Py_InitializeEx(int);
33#ifndef Py_LIMITED_API
34PyAPI_FUNC(void) _Py_InitializeEx_Private(int, int);
35#endif
36PyAPI_FUNC(void) Py_Finalize(void);
Martin Panterb4ce1fc2015-11-30 03:18:29 +000037PyAPI_FUNC(int) Py_FinalizeEx(void);
Nick Coghland6009512014-11-20 21:39:37 +100038PyAPI_FUNC(int) Py_IsInitialized(void);
Eric Snow1abcf672017-05-23 21:46:51 -070039
40/* Subinterpreter support */
Nick Coghland6009512014-11-20 21:39:37 +100041PyAPI_FUNC(PyThreadState *) Py_NewInterpreter(void);
42PyAPI_FUNC(void) Py_EndInterpreter(PyThreadState *);
43
44
45/* Py_PyAtExit is for the atexit module, Py_AtExit is for low-level
46 * exit functions.
47 */
48#ifndef Py_LIMITED_API
49PyAPI_FUNC(void) _Py_PyAtExit(void (*func)(void));
50#endif
51PyAPI_FUNC(int) Py_AtExit(void (*func)(void));
52
53PyAPI_FUNC(void) Py_Exit(int);
54
55/* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. */
56#ifndef Py_LIMITED_API
57PyAPI_FUNC(void) _Py_RestoreSignals(void);
58
59PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *);
60#endif
61
62/* Bootstrap __main__ (defined in Modules/main.c) */
63PyAPI_FUNC(int) Py_Main(int argc, wchar_t **argv);
64
65/* In getpath.c */
66PyAPI_FUNC(wchar_t *) Py_GetProgramFullPath(void);
67PyAPI_FUNC(wchar_t *) Py_GetPrefix(void);
68PyAPI_FUNC(wchar_t *) Py_GetExecPrefix(void);
69PyAPI_FUNC(wchar_t *) Py_GetPath(void);
70PyAPI_FUNC(void) Py_SetPath(const wchar_t *);
71#ifdef MS_WINDOWS
72int _Py_CheckPython3();
73#endif
74
75/* In their own files */
76PyAPI_FUNC(const char *) Py_GetVersion(void);
77PyAPI_FUNC(const char *) Py_GetPlatform(void);
78PyAPI_FUNC(const char *) Py_GetCopyright(void);
79PyAPI_FUNC(const char *) Py_GetCompiler(void);
80PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
81#ifndef Py_LIMITED_API
Ned Deily5c4b0d02017-03-04 00:19:55 -050082PyAPI_FUNC(const char *) _Py_gitidentifier(void);
83PyAPI_FUNC(const char *) _Py_gitversion(void);
Nick Coghland6009512014-11-20 21:39:37 +100084#endif
85
86/* Internal -- various one-time initializations */
87#ifndef Py_LIMITED_API
88PyAPI_FUNC(PyObject *) _PyBuiltin_Init(void);
Eric Snow6b4be192017-05-22 21:36:03 -070089PyAPI_FUNC(PyObject *) _PySys_BeginInit(void);
90PyAPI_FUNC(int) _PySys_EndInit(PyObject *sysdict);
Nick Coghland6009512014-11-20 21:39:37 +100091PyAPI_FUNC(void) _PyImport_Init(void);
92PyAPI_FUNC(void) _PyExc_Init(PyObject * bltinmod);
93PyAPI_FUNC(void) _PyImportHooks_Init(void);
94PyAPI_FUNC(int) _PyFrame_Init(void);
95PyAPI_FUNC(int) _PyFloat_Init(void);
96PyAPI_FUNC(int) PyByteArray_Init(void);
Eric Snow1abcf672017-05-23 21:46:51 -070097PyAPI_FUNC(void) _Py_HashRandomization_Init(_PyCoreConfig *core_config);
Nick Coghland6009512014-11-20 21:39:37 +100098#endif
99
100/* Various internal finalizers */
101#ifndef Py_LIMITED_API
102PyAPI_FUNC(void) _PyExc_Fini(void);
103PyAPI_FUNC(void) _PyImport_Fini(void);
104PyAPI_FUNC(void) PyMethod_Fini(void);
105PyAPI_FUNC(void) PyFrame_Fini(void);
106PyAPI_FUNC(void) PyCFunction_Fini(void);
107PyAPI_FUNC(void) PyDict_Fini(void);
108PyAPI_FUNC(void) PyTuple_Fini(void);
109PyAPI_FUNC(void) PyList_Fini(void);
110PyAPI_FUNC(void) PySet_Fini(void);
111PyAPI_FUNC(void) PyBytes_Fini(void);
112PyAPI_FUNC(void) PyByteArray_Fini(void);
113PyAPI_FUNC(void) PyFloat_Fini(void);
114PyAPI_FUNC(void) PyOS_FiniInterrupts(void);
115PyAPI_FUNC(void) _PyGC_DumpShutdownStats(void);
116PyAPI_FUNC(void) _PyGC_Fini(void);
117PyAPI_FUNC(void) PySlice_Fini(void);
118PyAPI_FUNC(void) _PyType_Fini(void);
Eric Snow6b4be192017-05-22 21:36:03 -0700119PyAPI_FUNC(void) _Py_HashRandomization_Fini(void);
Yury Selivanoveb636452016-09-08 22:01:51 -0700120PyAPI_FUNC(void) PyAsyncGen_Fini(void);
Nick Coghland6009512014-11-20 21:39:37 +1000121
122PyAPI_DATA(PyThreadState *) _Py_Finalizing;
123#endif
124
125/* Signals */
126typedef void (*PyOS_sighandler_t)(int);
127PyAPI_FUNC(PyOS_sighandler_t) PyOS_getsig(int);
128PyAPI_FUNC(PyOS_sighandler_t) PyOS_setsig(int, PyOS_sighandler_t);
129
Serhiy Storchaka9fab79b2016-09-11 11:03:14 +0300130#ifndef Py_LIMITED_API
Nick Coghland6009512014-11-20 21:39:37 +1000131/* Random */
Victor Stinnere66987e2016-09-06 16:33:52 -0700132PyAPI_FUNC(int) _PyOS_URandom(void *buffer, Py_ssize_t size);
133PyAPI_FUNC(int) _PyOS_URandomNonblock(void *buffer, Py_ssize_t size);
Serhiy Storchaka9fab79b2016-09-11 11:03:14 +0300134#endif /* !Py_LIMITED_API */
Nick Coghland6009512014-11-20 21:39:37 +1000135
136#ifdef __cplusplus
137}
138#endif
139#endif /* !Py_PYLIFECYCLE_H */