diff options
author | Victor Stinner <vstinner@redhat.com> | 2018-11-01 02:15:58 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-01 02:15:58 (GMT) |
commit | a1c249c40517917d2e0971d55aea8d14a44b2cc8 (patch) | |
tree | 626ca174cb49d8dd299f529cc100485a08bea9d2 /Include | |
parent | e281f7d80ce2584a7e6a36acffb5a9cd796a0fe2 (diff) | |
download | cpython-a1c249c40517917d2e0971d55aea8d14a44b2cc8.zip cpython-a1c249c40517917d2e0971d55aea8d14a44b2cc8.tar.gz cpython-a1c249c40517917d2e0971d55aea8d14a44b2cc8.tar.bz2 |
bpo-35081: And pycore_lifecycle.h and pycore_pathconfig.h (GH-10273)
* And pycore_lifecycle.h and pycore_pathconfig.h headers to
Include/internal/
* Move Py_BUILD_CORE specific code from coreconfig.h and
pylifecycle.h to pycore_pathconfig.h and pycore_lifecycle.h
* Move _Py_wstrlist_XXX() definitions and _PyPathConfig code
from pycore_state.h to pycore_pathconfig.h
* Move "Init" and "Fini" function definitions from pylifecycle.c to
pycore_lifecycle.h.
Diffstat (limited to 'Include')
-rw-r--r-- | Include/coreconfig.h | 11 | ||||
-rw-r--r-- | Include/internal/pycore_lifecycle.h | 50 | ||||
-rw-r--r-- | Include/internal/pycore_pathconfig.h | 68 | ||||
-rw-r--r-- | Include/internal/pycore_state.h | 49 | ||||
-rw-r--r-- | Include/pylifecycle.h | 31 |
5 files changed, 120 insertions, 89 deletions
diff --git a/Include/coreconfig.h b/Include/coreconfig.h index 83c4e7e..ff7b684 100644 --- a/Include/coreconfig.h +++ b/Include/coreconfig.h @@ -361,17 +361,6 @@ PyAPI_FUNC(int) _PyCoreConfig_GetEnvDup( #endif -#ifdef Py_BUILD_CORE -PyAPI_FUNC(int) _Py_SetFileSystemEncoding( - const char *encoding, - const char *errors); -PyAPI_FUNC(void) _Py_ClearFileSystemEncoding(void); -#endif - -#ifndef Py_LIMITED_API -PyAPI_FUNC(PyObject*) _Py_wstrlist_as_pylist(int len, wchar_t **list); -#endif - #ifdef __cplusplus } diff --git a/Include/internal/pycore_lifecycle.h b/Include/internal/pycore_lifecycle.h new file mode 100644 index 0000000..cf36440 --- /dev/null +++ b/Include/internal/pycore_lifecycle.h @@ -0,0 +1,50 @@ +#ifndef Py_INTERNAL_LIFECYCLE_H +#define Py_INTERNAL_LIFECYCLE_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "Py_BUILD_CORE must be defined to include this header" +#endif + +PyAPI_FUNC(int) _Py_UnixMain(int argc, char **argv); + +PyAPI_FUNC(int) _Py_SetFileSystemEncoding( + const char *encoding, + const char *errors); +PyAPI_FUNC(void) _Py_ClearFileSystemEncoding(void); + +PyAPI_FUNC(void) _Py_ClearStandardStreamEncoding(void); + +PyAPI_FUNC(int) _Py_IsLocaleCoercionTarget(const char *ctype_loc); + +extern int _PyUnicode_Init(void); +extern int _PyStructSequence_Init(void); +extern int _PyLong_Init(void); +extern _PyInitError _PyFaulthandler_Init(int enable); +extern int _PyTraceMalloc_Init(int enable); + +extern void _Py_ReadyTypes(void); + +PyAPI_FUNC(void) _PyExc_Fini(void); +PyAPI_FUNC(void) _PyImport_Fini(void); +PyAPI_FUNC(void) _PyImport_Fini2(void); +PyAPI_FUNC(void) _PyGC_Fini(void); +PyAPI_FUNC(void) _PyType_Fini(void); +PyAPI_FUNC(void) _Py_HashRandomization_Fini(void); +extern void _PyUnicode_Fini(void); +extern void PyLong_Fini(void); +extern void _PyFaulthandler_Fini(void); +extern void _PyHash_Fini(void); +extern int _PyTraceMalloc_Fini(void); + +extern void _PyGILState_Init(PyInterpreterState *, PyThreadState *); +extern void _PyGILState_Fini(void); + +PyAPI_FUNC(void) _PyGC_DumpShutdownStats(void); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_LIFECYCLE_H */ diff --git a/Include/internal/pycore_pathconfig.h b/Include/internal/pycore_pathconfig.h new file mode 100644 index 0000000..395df49 --- /dev/null +++ b/Include/internal/pycore_pathconfig.h @@ -0,0 +1,68 @@ +#ifndef Py_INTERNAL_PATHCONFIG_H +#define Py_INTERNAL_PATHCONFIG_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(void) _Py_wstrlist_clear( + int len, + wchar_t **list); +PyAPI_FUNC(wchar_t**) _Py_wstrlist_copy( + int len, + wchar_t **list); +PyAPI_FUNC(_PyInitError) _Py_wstrlist_append( + int *len, + wchar_t ***list, + const wchar_t *str); +PyAPI_FUNC(PyObject*) _Py_wstrlist_as_pylist( + int len, + wchar_t **list); + +typedef struct _PyPathConfig { + /* Full path to the Python program */ + wchar_t *program_full_path; + wchar_t *prefix; +#ifdef MS_WINDOWS + wchar_t *dll_path; +#else + wchar_t *exec_prefix; +#endif + /* Set by Py_SetPath(), or computed by _PyPathConfig_Init() */ + wchar_t *module_search_path; + /* Python program name */ + wchar_t *program_name; + /* Set by Py_SetPythonHome() or PYTHONHOME environment variable */ + wchar_t *home; + /* isolated and site_import are used to set Py_IsolatedFlag and + Py_NoSiteFlag flags on Windows in read_pth_file(). These fields + are ignored when their value are equal to -1 (unset). */ + int isolated; + int site_import; +} _PyPathConfig; + +#define _PyPathConfig_INIT \ + {.module_search_path = NULL, \ + .isolated = -1, \ + .site_import = -1} +/* Note: _PyPathConfig_INIT sets other fields to 0/NULL */ + +PyAPI_DATA(_PyPathConfig) _Py_path_config; + +PyAPI_FUNC(void) _PyPathConfig_ClearGlobal(void); +PyAPI_FUNC(_PyInitError) _PyPathConfig_SetGlobal( + const struct _PyPathConfig *config); + +PyAPI_FUNC(_PyInitError) _PyPathConfig_Calculate_impl( + _PyPathConfig *config, + const _PyCoreConfig *core_config); +PyAPI_FUNC(PyObject*) _PyPathConfig_ComputeArgv0(int argc, wchar_t **argv); +PyAPI_FUNC(int) _Py_FindEnvConfigValue( + FILE *env_file, + const wchar_t *key, + wchar_t *value, + size_t value_size); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_PATHCONFIG_H */ diff --git a/Include/internal/pycore_state.h b/Include/internal/pycore_state.h index 9a084f7..6285ecf 100644 --- a/Include/internal/pycore_state.h +++ b/Include/internal/pycore_state.h @@ -11,8 +11,9 @@ extern "C" { #include "pystate.h" #include "pythread.h" -#include "pycore_mem.h" #include "pycore_ceval.h" +#include "pycore_mem.h" +#include "pycore_pathconfig.h" #include "pycore_warnings.h" @@ -40,52 +41,6 @@ struct _gilstate_runtime_state { #define _PyGILState_check_enabled _PyRuntime.gilstate.check_enabled -typedef struct _PyPathConfig { - /* Full path to the Python program */ - wchar_t *program_full_path; - wchar_t *prefix; -#ifdef MS_WINDOWS - wchar_t *dll_path; -#else - wchar_t *exec_prefix; -#endif - /* Set by Py_SetPath(), or computed by _PyPathConfig_Init() */ - wchar_t *module_search_path; - /* Python program name */ - wchar_t *program_name; - /* Set by Py_SetPythonHome() or PYTHONHOME environment variable */ - wchar_t *home; - /* isolated and site_import are used to set Py_IsolatedFlag and - Py_NoSiteFlag flags on Windows in read_pth_file(). These fields - are ignored when their value are equal to -1 (unset). */ - int isolated; - int site_import; -} _PyPathConfig; - -#define _PyPathConfig_INIT \ - {.module_search_path = NULL, \ - .isolated = -1, \ - .site_import = -1} -/* Note: _PyPathConfig_INIT sets other fields to 0/NULL */ - -PyAPI_DATA(_PyPathConfig) _Py_path_config; - -PyAPI_FUNC(_PyInitError) _PyPathConfig_Calculate_impl( - _PyPathConfig *config, - const _PyCoreConfig *core_config); -PyAPI_FUNC(void) _PyPathConfig_ClearGlobal(void); - -PyAPI_FUNC(void) _Py_wstrlist_clear( - int len, - wchar_t **list); -PyAPI_FUNC(wchar_t**) _Py_wstrlist_copy( - int len, - wchar_t **list); -PyAPI_FUNC(_PyInitError) _Py_wstrlist_append( - int *len, - wchar_t ***list, - const wchar_t *str); - /* interpreter state */ PyAPI_FUNC(PyInterpreterState *) _PyInterpreterState_LookUpID(PY_INT64_T); diff --git a/Include/pylifecycle.h b/Include/pylifecycle.h index 04e672e..ca1f24f 100644 --- a/Include/pylifecycle.h +++ b/Include/pylifecycle.h @@ -20,9 +20,6 @@ PyAPI_FUNC(wchar_t *) Py_GetPythonHome(void); PyAPI_FUNC(int) Py_SetStandardStreamEncoding(const char *encoding, const char *errors); #endif -#ifdef Py_BUILD_CORE -PyAPI_FUNC(void) _Py_ClearStandardStreamEncoding(void); -#endif #ifndef Py_LIMITED_API @@ -82,27 +79,12 @@ PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *); /* Bootstrap __main__ (defined in Modules/main.c) */ PyAPI_FUNC(int) Py_Main(int argc, wchar_t **argv); -#ifdef Py_BUILD_CORE -PyAPI_FUNC(int) _Py_UnixMain(int argc, char **argv); -#endif /* In getpath.c */ PyAPI_FUNC(wchar_t *) Py_GetProgramFullPath(void); PyAPI_FUNC(wchar_t *) Py_GetPrefix(void); PyAPI_FUNC(wchar_t *) Py_GetExecPrefix(void); PyAPI_FUNC(wchar_t *) Py_GetPath(void); -#ifdef Py_BUILD_CORE -struct _PyPathConfig; - -PyAPI_FUNC(_PyInitError) _PyPathConfig_SetGlobal( - const struct _PyPathConfig *config); -PyAPI_FUNC(PyObject*) _PyPathConfig_ComputeArgv0(int argc, wchar_t **argv); -PyAPI_FUNC(int) _Py_FindEnvConfigValue( - FILE *env_file, - const wchar_t *key, - wchar_t *value, - size_t value_size); -#endif PyAPI_FUNC(void) Py_SetPath(const wchar_t *); #ifdef MS_WINDOWS int _Py_CheckPython3(void); @@ -134,16 +116,6 @@ PyAPI_FUNC(_PyInitError) _Py_HashRandomization_Init(const _PyCoreConfig *); /* Various internal finalizers */ -#ifdef Py_BUILD_CORE -PyAPI_FUNC(void) _PyExc_Fini(void); -PyAPI_FUNC(void) _PyImport_Fini(void); -PyAPI_FUNC(void) _PyImport_Fini2(void); -PyAPI_FUNC(void) _PyGC_DumpShutdownStats(void); -PyAPI_FUNC(void) _PyGC_Fini(void); -PyAPI_FUNC(void) _PyType_Fini(void); -PyAPI_FUNC(void) _Py_HashRandomization_Fini(void); -#endif /* Py_BUILD_CORE */ - #ifndef Py_LIMITED_API PyAPI_FUNC(void) PyMethod_Fini(void); PyAPI_FUNC(void) PyFrame_Fini(void); @@ -179,9 +151,6 @@ PyAPI_FUNC(void) _Py_CoerceLegacyLocale(int warn); PyAPI_FUNC(int) _Py_LegacyLocaleDetected(void); PyAPI_FUNC(char *) _Py_SetLocaleFromEnv(int category); #endif -#ifdef Py_BUILD_CORE -PyAPI_FUNC(int) _Py_IsLocaleCoercionTarget(const char *ctype_loc); -#endif #ifdef __cplusplus } |