bpo-41078: Add pycore_list.h internal header file (GH-21057)
* Move _PyList_ITEMS() to pycore_list.h. * The C extension "_heapq" is now built with Py_BUILD_CORE_MODULE macro defined to access the internal C API.
This commit is contained in:
parent
384621c42f
commit
c45dbe93b7
|
@ -32,4 +32,3 @@ PyAPI_FUNC(void) _PyList_DebugMallocStats(FILE *out);
|
||||||
#define PyList_GET_ITEM(op, i) (_PyList_CAST(op)->ob_item[i])
|
#define PyList_GET_ITEM(op, i) (_PyList_CAST(op)->ob_item[i])
|
||||||
#define PyList_SET_ITEM(op, i, v) (_PyList_CAST(op)->ob_item[i] = (v))
|
#define PyList_SET_ITEM(op, i, v) (_PyList_CAST(op)->ob_item[i] = (v))
|
||||||
#define PyList_GET_SIZE(op) Py_SIZE(_PyList_CAST(op))
|
#define PyList_GET_SIZE(op) Py_SIZE(_PyList_CAST(op))
|
||||||
#define _PyList_ITEMS(op) (_PyList_CAST(op)->ob_item)
|
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
#ifndef Py_INTERNAL_LIST_H
|
||||||
|
#define Py_INTERNAL_LIST_H
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef Py_BUILD_CORE
|
||||||
|
# error "this header requires Py_BUILD_CORE define"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "listobject.h" // _PyList_CAST()
|
||||||
|
|
||||||
|
|
||||||
|
#define _PyList_ITEMS(op) (_PyList_CAST(op)->ob_item)
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif /* !Py_INTERNAL_LIST_H */
|
|
@ -1110,6 +1110,7 @@ PYTHON_HEADERS= \
|
||||||
$(srcdir)/Include/internal/pycore_import.h \
|
$(srcdir)/Include/internal/pycore_import.h \
|
||||||
$(srcdir)/Include/internal/pycore_initconfig.h \
|
$(srcdir)/Include/internal/pycore_initconfig.h \
|
||||||
$(srcdir)/Include/internal/pycore_interp.h \
|
$(srcdir)/Include/internal/pycore_interp.h \
|
||||||
|
$(srcdir)/Include/internal/pycore_list.h \
|
||||||
$(srcdir)/Include/internal/pycore_object.h \
|
$(srcdir)/Include/internal/pycore_object.h \
|
||||||
$(srcdir)/Include/internal/pycore_pathconfig.h \
|
$(srcdir)/Include/internal/pycore_pathconfig.h \
|
||||||
$(srcdir)/Include/internal/pycore_pyerrors.h \
|
$(srcdir)/Include/internal/pycore_pyerrors.h \
|
||||||
|
|
|
@ -180,7 +180,7 @@ _symtable symtablemodule.c
|
||||||
#_datetime _datetimemodule.c # datetime accelerator
|
#_datetime _datetimemodule.c # datetime accelerator
|
||||||
#_zoneinfo _zoneinfo.c # zoneinfo accelerator
|
#_zoneinfo _zoneinfo.c # zoneinfo accelerator
|
||||||
#_bisect _bisectmodule.c # Bisection algorithms
|
#_bisect _bisectmodule.c # Bisection algorithms
|
||||||
#_heapq _heapqmodule.c # Heap queue algorithm
|
#_heapq _heapqmodule.c -DPy_BUILD_CORE_MODULE # Heap queue algorithm
|
||||||
#_asyncio _asynciomodule.c # Fast asyncio Future
|
#_asyncio _asynciomodule.c # Fast asyncio Future
|
||||||
#_json -I$(srcdir)/Include/internal -DPy_BUILD_CORE_BUILTIN _json.c # _json speedups
|
#_json -I$(srcdir)/Include/internal -DPy_BUILD_CORE_BUILTIN _json.c # _json speedups
|
||||||
#_statistics _statisticsmodule.c # statistics accelerator
|
#_statistics _statisticsmodule.c # statistics accelerator
|
||||||
|
|
|
@ -7,9 +7,11 @@ annotated by François Pinard, and converted to C by Raymond Hettinger.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
|
#include "pycore_list.h" // _PyList_ITEMS()
|
||||||
|
|
||||||
#include "clinic/_heapqmodule.c.h"
|
#include "clinic/_heapqmodule.c.h"
|
||||||
|
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
module _heapq
|
module _heapq
|
||||||
[clinic start generated code]*/
|
[clinic start generated code]*/
|
||||||
|
|
|
@ -165,8 +165,8 @@
|
||||||
<ClInclude Include="..\Include\internal\pycore_abstract.h" />
|
<ClInclude Include="..\Include\internal\pycore_abstract.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_accu.h" />
|
<ClInclude Include="..\Include\internal\pycore_accu.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_atomic.h" />
|
<ClInclude Include="..\Include\internal\pycore_atomic.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_bytes_methods.h" />
|
|
||||||
<ClInclude Include="..\Include\internal\pycore_bitutils.h" />
|
<ClInclude Include="..\Include\internal\pycore_bitutils.h" />
|
||||||
|
<ClInclude Include="..\Include\internal\pycore_bytes_methods.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_call.h" />
|
<ClInclude Include="..\Include\internal\pycore_call.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_ceval.h" />
|
<ClInclude Include="..\Include\internal\pycore_ceval.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_code.h" />
|
<ClInclude Include="..\Include\internal\pycore_code.h" />
|
||||||
|
@ -181,6 +181,7 @@
|
||||||
<ClInclude Include="..\Include\internal\pycore_import.h" />
|
<ClInclude Include="..\Include\internal\pycore_import.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_initconfig.h" />
|
<ClInclude Include="..\Include\internal\pycore_initconfig.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_interp.h" />
|
<ClInclude Include="..\Include\internal\pycore_interp.h" />
|
||||||
|
<ClInclude Include="..\Include\internal\pycore_list.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_object.h" />
|
<ClInclude Include="..\Include\internal\pycore_object.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_pathconfig.h" />
|
<ClInclude Include="..\Include\internal\pycore_pathconfig.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_pyerrors.h" />
|
<ClInclude Include="..\Include\internal\pycore_pyerrors.h" />
|
||||||
|
|
|
@ -240,6 +240,9 @@
|
||||||
<ClInclude Include="..\Include\internal\pycore_interp.h">
|
<ClInclude Include="..\Include\internal\pycore_interp.h">
|
||||||
<Filter>Include</Filter>
|
<Filter>Include</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\Include\internal\pycore_list.h">
|
||||||
|
<Filter>Include</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\Include\internal\pycore_object.h">
|
<ClInclude Include="..\Include\internal\pycore_object.h">
|
||||||
<Filter>Include</Filter>
|
<Filter>Include</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
3
setup.py
3
setup.py
|
@ -863,7 +863,8 @@ class PyBuildExt(build_ext):
|
||||||
# bisect
|
# bisect
|
||||||
self.add(Extension("_bisect", ["_bisectmodule.c"]))
|
self.add(Extension("_bisect", ["_bisectmodule.c"]))
|
||||||
# heapq
|
# heapq
|
||||||
self.add(Extension("_heapq", ["_heapqmodule.c"]))
|
self.add(Extension("_heapq", ["_heapqmodule.c"],
|
||||||
|
extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
|
||||||
# C-optimized pickle replacement
|
# C-optimized pickle replacement
|
||||||
self.add(Extension("_pickle", ["_pickle.c"],
|
self.add(Extension("_pickle", ["_pickle.c"],
|
||||||
extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
|
extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
|
||||||
|
|
Loading…
Reference in New Issue