diff options
author | Victor Stinner <vstinner@python.org> | 2023-09-01 19:03:20 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-01 19:03:20 (GMT) |
commit | 45b9e6a61f4cd61c08b2b02d257b52635ab37a25 (patch) | |
tree | 17bd561901193b09c5847404d51c765b7e8b9545 | |
parent | 0e01fac315dfa705ac8a6954485546f28cf4c87d (diff) | |
download | cpython-45b9e6a61f4cd61c08b2b02d257b52635ab37a25.zip cpython-45b9e6a61f4cd61c08b2b02d257b52635ab37a25.tar.gz cpython-45b9e6a61f4cd61c08b2b02d257b52635ab37a25.tar.bz2 |
gh-108765: Move standard includes to Python.h (#108769)
* Move <ctype.h>, <limits.h> and <stdarg.h> standard includes to
Python.h.
* Move "pystats.h" include from object.h to Python.h.
* Remove redundant "pymem.h" include in objimpl.h and "pyport.h"
include in pymem.h; Python.h already includes them earlier.
* Remove redundant <wchar.h> include in unicodeobject.h; Python.h
already includes it.
* Move _SGI_MP_SOURCE define from Python.h to pyport.h.
* pycore_condvar.h includes explicitly <unistd.h> for the
_POSIX_THREADS macro.
-rw-r--r-- | Include/Python.h | 40 | ||||
-rw-r--r-- | Include/bytesobject.h | 5 | ||||
-rw-r--r-- | Include/internal/pycore_condvar.h | 4 | ||||
-rw-r--r-- | Include/modsupport.h | 5 | ||||
-rw-r--r-- | Include/object.h | 2 | ||||
-rw-r--r-- | Include/objimpl.h | 10 | ||||
-rw-r--r-- | Include/pyerrors.h | 6 | ||||
-rw-r--r-- | Include/pymem.h | 11 | ||||
-rw-r--r-- | Include/pyport.h | 11 | ||||
-rw-r--r-- | Include/unicodeobject.h | 8 |
10 files changed, 43 insertions, 59 deletions
diff --git a/Include/Python.h b/Include/Python.h index 07f6c20..44f0fd3 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -5,42 +5,50 @@ #ifndef Py_PYTHON_H #define Py_PYTHON_H -// Since this is a "meta-include" file, no #ifdef __cplusplus / extern "C" { +// Since this is a "meta-include" file, "#ifdef __cplusplus / extern "C" {" +// is not needed. + // Include Python header files #include "patchlevel.h" #include "pyconfig.h" #include "pymacconfig.h" -#if defined(__sgi) && !defined(_SGI_MP_SOURCE) -# define _SGI_MP_SOURCE + +// Include standard header files +#include <assert.h> // assert() +#include <ctype.h> // tolower() +#include <inttypes.h> // uintptr_t +#include <limits.h> // INT_MAX +#include <stdarg.h> // va_list +#include <wchar.h> // wchar_t +#ifdef HAVE_STDDEF_H +# include <stddef.h> // size_t +#endif +#ifndef MS_WINDOWS +# include <unistd.h> // sysconf() #endif -// stdlib.h, stdio.h, errno.h and string.h headers are not used by Python -// headers, but kept for backward compatibility. They are excluded from the -// limited C API of Python 3.11. +// errno.h, stdio.h, stdlib.h and string.h headers are no longer used by Python +// headers, but kept for backward compatibility (no introduce new compiler +// warnings). They are not included by the limited C API version 3.11 and +// above. #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000 -# include <stdlib.h> -# include <stdio.h> // FILE* # include <errno.h> // errno +# include <stdio.h> // FILE* +# include <stdlib.h> // getenv() # include <string.h> // memcpy() #endif -#ifndef MS_WINDOWS -# include <unistd.h> -#endif -#ifdef HAVE_STDDEF_H -# include <stddef.h> // size_t -#endif -#include <assert.h> // assert() -#include <wchar.h> // wchar_t +// Include Python header files #include "pyport.h" #include "pymacro.h" #include "pymath.h" #include "pymem.h" #include "pytypedefs.h" #include "pybuffer.h" +#include "pystats.h" #include "object.h" #include "objimpl.h" #include "typeslots.h" diff --git a/Include/bytesobject.h b/Include/bytesobject.h index ee448cd..c5a2419 100644 --- a/Include/bytesobject.h +++ b/Include/bytesobject.h @@ -1,5 +1,4 @@ - -/* Bytes object interface */ +// Bytes object interface #ifndef Py_BYTESOBJECT_H #define Py_BYTESOBJECT_H @@ -7,8 +6,6 @@ extern "C" { #endif -#include <stdarg.h> // va_list - /* Type PyBytesObject represents a byte string. An extra zero byte is reserved at the end to ensure it is zero-terminated, but a size is diff --git a/Include/internal/pycore_condvar.h b/Include/internal/pycore_condvar.h index db8682a..489e67d 100644 --- a/Include/internal/pycore_condvar.h +++ b/Include/internal/pycore_condvar.h @@ -5,6 +5,10 @@ # error "this header requires Py_BUILD_CORE define" #endif +#ifndef MS_WINDOWS +# include <unistd.h> // _POSIX_THREADS +#endif + #ifndef _POSIX_THREADS /* This means pthreads are not implemented in libc headers, hence the macro not present in unistd.h. But they still can be implemented as an external diff --git a/Include/modsupport.h b/Include/modsupport.h index 7c15ab5..6efe9dfa 100644 --- a/Include/modsupport.h +++ b/Include/modsupport.h @@ -1,3 +1,4 @@ +// Module support interface #ifndef Py_MODSUPPORT_H #define Py_MODSUPPORT_H @@ -5,10 +6,6 @@ extern "C" { #endif -/* Module support interface */ - -#include <stdarg.h> // va_list - PyAPI_FUNC(int) PyArg_Parse(PyObject *, const char *, ...); PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, ...); PyAPI_FUNC(int) PyArg_ParseTupleAndKeywords(PyObject *, PyObject *, diff --git a/Include/object.h b/Include/object.h index de2a1ce..b94b290 100644 --- a/Include/object.h +++ b/Include/object.h @@ -51,8 +51,6 @@ A standard interface exists for objects that contain an array of items whose size is determined when the object is allocated. */ -#include "pystats.h" - /* Py_DEBUG implies Py_REF_DEBUG. */ #if defined(Py_DEBUG) && !defined(Py_REF_DEBUG) # define Py_REF_DEBUG diff --git a/Include/objimpl.h b/Include/objimpl.h index ef871c5..967e277 100644 --- a/Include/objimpl.h +++ b/Include/objimpl.h @@ -1,12 +1,8 @@ -/* The PyObject_ memory family: high-level object memory interfaces. - See pymem.h for the low-level PyMem_ family. -*/ +// The PyObject_ memory family: high-level object memory interfaces. +// See pymem.h for the low-level PyMem_ family. #ifndef Py_OBJIMPL_H #define Py_OBJIMPL_H - -#include "pymem.h" - #ifdef __cplusplus extern "C" { #endif @@ -231,4 +227,4 @@ PyAPI_FUNC(int) PyObject_GC_IsFinalized(PyObject *); #ifdef __cplusplus } #endif -#endif /* !Py_OBJIMPL_H */ +#endif // !Py_OBJIMPL_H diff --git a/Include/pyerrors.h b/Include/pyerrors.h index d089fa7..5d0028c 100644 --- a/Include/pyerrors.h +++ b/Include/pyerrors.h @@ -1,13 +1,11 @@ +// Error handling definitions + #ifndef Py_ERRORS_H #define Py_ERRORS_H #ifdef __cplusplus extern "C" { #endif -#include <stdarg.h> // va_list - -/* Error handling definitions */ - PyAPI_FUNC(void) PyErr_SetNone(PyObject *); PyAPI_FUNC(void) PyErr_SetObject(PyObject *, PyObject *); PyAPI_FUNC(void) PyErr_SetString( diff --git a/Include/pymem.h b/Include/pymem.h index e882645..68e33f9 100644 --- a/Include/pymem.h +++ b/Include/pymem.h @@ -1,12 +1,8 @@ -/* The PyMem_ family: low-level memory allocation interfaces. - See objimpl.h for the PyObject_ memory family. -*/ +// The PyMem_ family: low-level memory allocation interfaces. +// See objimpl.h for the PyObject_ memory family. #ifndef Py_PYMEM_H #define Py_PYMEM_H - -#include "pyport.h" - #ifdef __cplusplus extern "C" { #endif @@ -100,5 +96,4 @@ PyAPI_FUNC(void) PyMem_Free(void *ptr); #ifdef __cplusplus } #endif - -#endif /* !Py_PYMEM_H */ +#endif // !Py_PYMEM_H diff --git a/Include/pyport.h b/Include/pyport.h index 115b54f..511c3fd 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -1,13 +1,8 @@ #ifndef Py_PYPORT_H #define Py_PYPORT_H -#include "pyconfig.h" /* include for defines */ - -#include <inttypes.h> - -#include <limits.h> #ifndef UCHAR_MAX -# error "limits.h must define UCHAR_MAX" +# error "<limits.h> header must define UCHAR_MAX" #endif #if UCHAR_MAX != 255 # error "Python's source code assumes C's unsigned char is an 8-bit type" @@ -771,4 +766,8 @@ extern char * _getpty(int *, int, mode_t, int); # define ALIGNOF_MAX_ALIGN_T _Alignof(long double) #endif +#if defined(__sgi) && !defined(_SGI_MP_SOURCE) +# define _SGI_MP_SOURCE +#endif + #endif /* Py_PYPORT_H */ diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h index 5839c74..f002777 100644 --- a/Include/unicodeobject.h +++ b/Include/unicodeobject.h @@ -1,8 +1,6 @@ #ifndef Py_UNICODEOBJECT_H #define Py_UNICODEOBJECT_H -#include <stdarg.h> // va_list - /* Unicode implementation based on original code by Fredrik Lundh, @@ -55,8 +53,6 @@ Copyright (c) Corporation for National Research Initiatives. * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * -------------------------------------------------------------------- */ -#include <ctype.h> - /* === Internal API ======================================================= */ /* --- Internal Unicode Format -------------------------------------------- */ @@ -93,10 +89,6 @@ Copyright (c) Corporation for National Research Initiatives. # endif #endif -#ifdef HAVE_WCHAR_H -# include <wchar.h> -#endif - /* Py_UCS4 and Py_UCS2 are typedefs for the respective unicode representations. */ typedef uint32_t Py_UCS4; |