diff options
author | Victor Stinner <vstinner@python.org> | 2022-04-07 01:05:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-07 01:05:27 +0200 |
commit | ca219f6dfc57f8f4984f96df0f733b7de92fe91c (patch) | |
tree | 0accddd1872a266bd1da71bd29464adf3071a24b | |
parent | 612e422c6ea9df60d3382ed1491d8254c283e93f (diff) | |
download | cpython-ca219f6dfc57f8f4984f96df0f733b7de92fe91c.tar.gz cpython-ca219f6dfc57f8f4984f96df0f733b7de92fe91c.zip |
bpo-35134: Add Include/cpython/complexobject.h header (GH-32383)
Move the private _PyComplex_FormatAdvancedWriter() function to the
internal C API. This function is no longer exported.
-rw-r--r-- | Include/complexobject.h | 45 | ||||
-rw-r--r-- | Include/cpython/complexobject.h | 44 | ||||
-rw-r--r-- | Makefile.pre.in | 1 | ||||
-rw-r--r-- | PCbuild/pythoncore.vcxproj | 1 | ||||
-rw-r--r-- | PCbuild/pythoncore.vcxproj.filters | 3 |
5 files changed, 52 insertions, 42 deletions
diff --git a/Include/complexobject.h b/Include/complexobject.h index 9221f9c51d6..c7764e43803 100644 --- a/Include/complexobject.h +++ b/Include/complexobject.h @@ -6,61 +6,22 @@ extern "C" { #endif -#ifndef Py_LIMITED_API -typedef struct { - double real; - double imag; -} Py_complex; - -/* Operations on complex numbers from complexmodule.c */ - -PyAPI_FUNC(Py_complex) _Py_c_sum(Py_complex, Py_complex); -PyAPI_FUNC(Py_complex) _Py_c_diff(Py_complex, Py_complex); -PyAPI_FUNC(Py_complex) _Py_c_neg(Py_complex); -PyAPI_FUNC(Py_complex) _Py_c_prod(Py_complex, Py_complex); -PyAPI_FUNC(Py_complex) _Py_c_quot(Py_complex, Py_complex); -PyAPI_FUNC(Py_complex) _Py_c_pow(Py_complex, Py_complex); -PyAPI_FUNC(double) _Py_c_abs(Py_complex); -#endif - /* Complex object interface */ -/* -PyComplexObject represents a complex number with double-precision -real and imaginary parts. -*/ -#ifndef Py_LIMITED_API -typedef struct { - PyObject_HEAD - Py_complex cval; -} PyComplexObject; -#endif - PyAPI_DATA(PyTypeObject) PyComplex_Type; #define PyComplex_Check(op) PyObject_TypeCheck(op, &PyComplex_Type) #define PyComplex_CheckExact(op) Py_IS_TYPE(op, &PyComplex_Type) -#ifndef Py_LIMITED_API -PyAPI_FUNC(PyObject *) PyComplex_FromCComplex(Py_complex); -#endif PyAPI_FUNC(PyObject *) PyComplex_FromDoubles(double real, double imag); PyAPI_FUNC(double) PyComplex_RealAsDouble(PyObject *op); PyAPI_FUNC(double) PyComplex_ImagAsDouble(PyObject *op); -#ifndef Py_LIMITED_API -PyAPI_FUNC(Py_complex) PyComplex_AsCComplex(PyObject *op); -#endif -/* Format the object based on the format_spec, as defined in PEP 3101 - (Advanced String Formatting). */ #ifndef Py_LIMITED_API -PyAPI_FUNC(int) _PyComplex_FormatAdvancedWriter( - _PyUnicodeWriter *writer, - PyObject *obj, - PyObject *format_spec, - Py_ssize_t start, - Py_ssize_t end); +# define Py_CPYTHON_COMPLEXOBJECT_H +# include "cpython/complexobject.h" +# undef Py_CPYTHON_COMPLEXOBJECT_H #endif #ifdef __cplusplus diff --git a/Include/cpython/complexobject.h b/Include/cpython/complexobject.h new file mode 100644 index 00000000000..b7d7283ae88 --- /dev/null +++ b/Include/cpython/complexobject.h @@ -0,0 +1,44 @@ +#ifndef Py_CPYTHON_COMPLEXOBJECT_H +# error "this header file must not be included directly" +#endif + +typedef struct { + double real; + double imag; +} Py_complex; + +/* Operations on complex numbers from complexmodule.c */ + +PyAPI_FUNC(Py_complex) _Py_c_sum(Py_complex, Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_diff(Py_complex, Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_neg(Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_prod(Py_complex, Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_quot(Py_complex, Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_pow(Py_complex, Py_complex); +PyAPI_FUNC(double) _Py_c_abs(Py_complex); + +/* Complex object interface */ + +/* +PyComplexObject represents a complex number with double-precision +real and imaginary parts. +*/ +typedef struct { + PyObject_HEAD + Py_complex cval; +} PyComplexObject; + +PyAPI_FUNC(PyObject *) PyComplex_FromCComplex(Py_complex); + +PyAPI_FUNC(Py_complex) PyComplex_AsCComplex(PyObject *op); + +#ifdef Py_BUILD_CORE +/* Format the object based on the format_spec, as defined in PEP 3101 + (Advanced String Formatting). */ +extern int _PyComplex_FormatAdvancedWriter( + _PyUnicodeWriter *writer, + PyObject *obj, + PyObject *format_spec, + Py_ssize_t start, + Py_ssize_t end); +#endif // Py_BUILD_CORE diff --git a/Makefile.pre.in b/Makefile.pre.in index d9b96f52ec9..69e97234ae7 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1522,6 +1522,7 @@ PYTHON_HEADERS= \ $(srcdir)/Include/cpython/classobject.h \ $(srcdir)/Include/cpython/code.h \ $(srcdir)/Include/cpython/compile.h \ + $(srcdir)/Include/cpython/complexobject.h \ $(srcdir)/Include/cpython/context.h \ $(srcdir)/Include/cpython/descrobject.h \ $(srcdir)/Include/cpython/dictobject.h \ diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj index 4fc6aa80f6f..1d7c08b2c8a 100644 --- a/PCbuild/pythoncore.vcxproj +++ b/PCbuild/pythoncore.vcxproj @@ -141,6 +141,7 @@ <ClInclude Include="..\Include\cpython\classobject.h" /> <ClInclude Include="..\Include\cpython\code.h" /> <ClInclude Include="..\Include\cpython\compile.h" /> + <ClInclude Include="..\Include\cpython\complexobject.h" /> <ClInclude Include="..\Include\cpython\context.h" /> <ClInclude Include="..\Include\cpython\descrobject.h" /> <ClInclude Include="..\Include\cpython\dictobject.h" /> diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters index 55fca4982e0..571a7f13bc1 100644 --- a/PCbuild/pythoncore.vcxproj.filters +++ b/PCbuild/pythoncore.vcxproj.filters @@ -357,6 +357,9 @@ <ClInclude Include="..\Include\cpython\compile.h"> <Filter>Include</Filter> </ClInclude> + <ClInclude Include="..\Include\cpython\complexobject.h"> + <Filter>Include</Filter> + </ClInclude> <ClInclude Include="..\Include\cpython\context.h"> <Filter>Include\cpython</Filter> </ClInclude> |