mirror of
https://github.com/python/cpython.git
synced 2025-08-01 15:43:13 +00:00
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and PyVarObject_HEAD_INIT.
This commit is contained in:
parent
b1994b4a5d
commit
6819210b9e
129 changed files with 1090 additions and 1250 deletions
|
@ -269,7 +269,7 @@ typedef struct {
|
|||
|
||||
staticforward PyTypeObject Element_Type;
|
||||
|
||||
#define Element_CheckExact(op) ((op)->ob_type == &Element_Type)
|
||||
#define Element_CheckExact(op) (Py_Type(op) == &Element_Type)
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* element constructor and destructor */
|
||||
|
@ -1207,7 +1207,7 @@ element_setslice(PyObject* self_, Py_ssize_t start, Py_ssize_t end, PyObject* it
|
|||
/* FIXME: support arbitrary sequences? */
|
||||
PyErr_Format(
|
||||
PyExc_TypeError,
|
||||
"expected list, not \"%.200s\"", item->ob_type->tp_name
|
||||
"expected list, not \"%.200s\"", Py_Type(item)->tp_name
|
||||
);
|
||||
return -1;
|
||||
}
|
||||
|
@ -1440,7 +1440,7 @@ typedef struct {
|
|||
|
||||
staticforward PyTypeObject TreeBuilder_Type;
|
||||
|
||||
#define TreeBuilder_CheckExact(op) ((op)->ob_type == &TreeBuilder_Type)
|
||||
#define TreeBuilder_CheckExact(op) (Py_Type(op) == &TreeBuilder_Type)
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* constructor and destructor */
|
||||
|
@ -1607,7 +1607,7 @@ treebuilder_handle_data(TreeBuilderObject* self, PyObject* data)
|
|||
Py_INCREF(data); self->data = data;
|
||||
} else {
|
||||
/* more than one item; use a list to collect items */
|
||||
if (PyString_CheckExact(self->data) && self->data->ob_refcnt == 1 &&
|
||||
if (PyString_CheckExact(self->data) && Py_Refcnt(self->data) == 1 &&
|
||||
PyString_CheckExact(data) && PyString_GET_SIZE(data) == 1) {
|
||||
/* expat often generates single character data sections; handle
|
||||
the most common case by resizing the existing string... */
|
||||
|
@ -2623,9 +2623,9 @@ init_elementtree(void)
|
|||
#endif
|
||||
|
||||
/* Patch object type */
|
||||
Element_Type.ob_type = TreeBuilder_Type.ob_type = &PyType_Type;
|
||||
Py_Type(&Element_Type) = Py_Type(&TreeBuilder_Type) = &PyType_Type;
|
||||
#if defined(USE_EXPAT)
|
||||
XMLParser_Type.ob_type = &PyType_Type;
|
||||
Py_Type(&XMLParser_Type) = &PyType_Type;
|
||||
#endif
|
||||
|
||||
m = Py_InitModule("_elementtree", _functions);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue