summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2018-11-01 02:15:58 (GMT)
committerGitHub <noreply@github.com>2018-11-01 02:15:58 (GMT)
commita1c249c40517917d2e0971d55aea8d14a44b2cc8 (patch)
tree626ca174cb49d8dd299f529cc100485a08bea9d2 /Include
parente281f7d80ce2584a7e6a36acffb5a9cd796a0fe2 (diff)
downloadcpython-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.h11
-rw-r--r--Include/internal/pycore_lifecycle.h50
-rw-r--r--Include/internal/pycore_pathconfig.h68
-rw-r--r--Include/internal/pycore_state.h49
-rw-r--r--Include/pylifecycle.h31
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
}