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