8000 gh-111178: Fix function signatures in odictobject.c by vstinner · Pull Request #131160 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

gh-111178: Fix function signatures in odictobject.c #131160

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 13, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
8000
Diff view
96 changes: 56 additions & 40 deletions Objects/odictobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -857,20 +857,20 @@ _odict_keys_equal(PyODictObject *a, PyODictObject *b)
/* mp_ass_subscript: __setitem__() and __delitem__() */

static int
odict_mp_ass_sub(PyODictObject *od, PyObject *v, PyObject *w)
odict_mp_ass_sub(PyObject *od, PyObject *v, PyObject *w)
{
if (w == NULL)
return PyODict_DelItem((PyObject *)od, v);
return PyODict_DelItem(od, v);
else
return PyODict_SetItem((PyObject *)od, v, w);
return PyODict_SetItem(od, v, w);
}

/* tp_as_mapping */

static PyMappingMethods odict_as_mapping = {
0, /*mp_length*/
0, /*mp_subscript*/
(objobjargproc)odict_mp_ass_sub, /*mp_ass_subscript*/
odict_mp_ass_sub, /*mp_ass_subscript*/
};


Expand Down Expand Up @@ -953,8 +953,9 @@ OrderedDict_fromkeys_impl(PyTypeObject *type, PyObject *seq, PyObject *value)
PyDoc_STRVAR(odict_sizeof__doc__, "");

static PyObject *
odict_sizeof(PyODictObject *od, PyObject *Py_UNUSED(ignored))
odict_sizeof(PyObject *op, PyObject *Py_UNUSED(ignored))
{
PyODictObject *od = (PyODictObject*)op;
Py_ssize_t res = _PyDict_SizeOf((PyDictObject *)od);
res += sizeof(_ODictNode *) * od->od_fast_nodes_size; /* od_fast_nodes */
if (!_odict_EMPTY(od)) {
Expand All @@ -968,8 +969,9 @@ odict_sizeof(PyODictObject *od, PyObject *Py_UNUSED(ignored))
PyDoc_STRVAR(odict_reduce__doc__, "Return state information for pickling");

static PyObject *
odict_reduce(register PyODictObject *od, PyObject *Py_UNUSED(ignored))
odict_reduce(PyObject *op, PyObject *Py_UNUSED(ignored))
{
register PyODictObject *od = (PyODictObject*)op;
PyObject *state, *result = NULL;
PyObject *items_iter, *items, *args = NULL;

Expand Down Expand Up @@ -1192,9 +1194,10 @@ PyDoc_STRVAR(odict_clear__doc__,
"od.clear() -> None. Remove all items from od.");

static PyObject *
odict_clear(register PyODictObject *od, PyObject *Py_UNUSED(ignored))
odict_clear(PyObject *op, PyObject *Py_UNUSED(ignored))
{
PyDict_Clear((PyObject *)od);
register PyODictObject *od = (PyODictObject*)op;
PyDict_Clear(op);
_odict_clear_nodes(od);
Py_RETURN_NONE;
}
Expand All @@ -1208,8 +1211,9 @@ static int _PyODict_SetItem_KnownHash(PyObject *, PyObject *, PyObject *,
PyDoc_STRVAR(odict_copy__doc__, "od.copy() -> a shallow copy of od");

static PyObject *
odict_copy(register PyODictObject *od, PyObject *Py_UNUSED(ignored))
odict_copy(PyObject *op, PyObject *Py_UNUSED(ignored))
{
register PyODictObject *od = (PyODictObject*)op;
_ODictNode *node;
PyObject *od_copy;

Expand Down Expand Up @@ -1268,8 +1272,9 @@ PyDoc_STRVAR(odict_reversed__doc__, "od.__reversed__() <==> reversed(od)");
static PyObject * odictiter_new(PyODictObject *, int);

static PyObject *
odict_reversed(PyODictObject *od, PyObject *Py_UNUSED(ignored))
odict_reversed(PyObject *op, PyObject *Py_UNUSED(ignored))
{
PyODictObject *od = (PyODictObject*)op;
return odictiter_new(od, _odict_ITER_KEYS|_odict_ITER_REVERSED);
}

Expand Down Expand Up @@ -1330,9 +1335,9 @@ static PyMethodDef odict_methods[] = {

/* overridden dict methods */
ORDEREDDICT_FROMKEYS_METHODDEF
{"__sizeof__", (PyCFunction)odict_sizeof, METH_NOARGS,
{"__sizeof__", odict_sizeof, METH_NOARGS,
odict_sizeof__doc__},
{"__reduce__", (PyCFunction)odict_reduce, METH_NOARGS,
{"__reduce__", odict_reduce, METH_NOARGS,
odict_reduce__doc__},
ORDEREDDICT_SETDEFAULT_METHODDEF
ORDEREDDICT_POP_METHODDEF
Expand All @@ -1345,13 +1350,13 @@ static PyMethodDef odict_methods[] = {
odict_items__doc__},
{"update", _PyCFunction_CAST(odict_update), METH_VARARGS | METH_KEYWORDS,
odict_update__doc__},
{"clear", (PyCFunction)odict_clear, METH_NOARGS,
{"clear", odict_clear, METH_NOARGS,
odict_clear__doc__},
{"copy", (PyCFunction)odict_copy, METH_NOARGS,
{"copy", odict_copy, METH_NOARGS,
odict_copy__doc__},

/* new methods */
{"__reversed__", (PyCFunction)odict_reversed, METH_NOARGS,
{"__reversed__", odict_reversed, METH_NOARGS,
odict_reversed__doc__},
ORDEREDDICT_MOVE_TO_END_METHODDEF

Expand All @@ -1377,8 +1382,9 @@ static PyGetSetDef odict_getset[] = {
/* tp_dealloc */

static void
odict_dealloc(PyODictObject *self)
odict_dealloc(PyObject *op)
{
PyODictObject *self = (PyODictObject*)op;
PyObject_GC_UnTrack(self);
Py_TRASHCAN_BEGIN(self, odict_dealloc)

Expand All @@ -1395,8 +1401,9 @@ odict_dealloc(PyODictObject *self)
/* tp_repr */

static PyObject *
odict_repr(PyODictObject *self)
odict_repr(PyObject *op)
{
PyODictObject *self = (PyODictObject*)op;
int i;
PyObject *result = NULL, *dcopy = NULL;

Expand Down Expand Up @@ -1431,8 +1438,9 @@ PyDoc_STRVAR(odict_doc,
/* tp_traverse */

static int
odict_traverse(PyODictObject *od, visitproc visit, void *arg)
odict_traverse(PyObject *op, visitproc visit, void *arg)
{
PyODictObject *od = (PyODictObject*)op;
_ODictNode *node;

Py_VISIT(od->od_inst_dict);
Expand All @@ -1445,8 +1453,9 @@ odict_traverse(PyODictObject *od, visitproc visit, void *arg)
/* tp_clear */

static int
odict_tp_clear(PyODictObject *od)
odict_tp_clear(PyObject *op)
{
PyODictObject *od = (PyODictObject*)op;
Py_CLEAR(od->od_inst_dict);
PyDict_Clear((PyObject *)od);
_odict_clear_nodes(od);
Expand Down Expand Up @@ -1492,9 +1501,9 @@ odict_richcompare(PyObject *v, PyObject *w, int op)
/* tp_iter */

static PyObject *
odict_iter(PyODictObject *od)
odict_iter(PyObject *op)
{
return odictiter_new(od, _odict_ITER_KEYS);
return odictiter_new((PyODictObject*)op, _odict_ITER_KEYS);
}

/* tp_init */
Expand Down Expand Up @@ -1530,12 +1539,12 @@ PyTypeObject PyODict_Type = {
"collections.OrderedDict", /* tp_name */
sizeof(PyODictObject), /* tp_basicsize */
0, /* tp_itemsize */
(destructor)odict_dealloc, /* tp_dealloc */
odict_dealloc, /* tp_dealloc */
0, /* tp_vectorcall_offset */
0, /* tp_getattr */
0, /* tp_setattr */
0, /* tp_as_async */
(reprfunc)odict_repr, /* tp_repr */
odict_repr, /* tp_repr */
&odict_as_number, /* tp_as_number */
0, /* tp_as_sequence */
&odict_as_mapping, /* tp_as_mapping */
Expand All @@ -1547,11 +1556,11 @@ PyTypeObject PyODict_Type = {
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,/* tp_flags */
odict_doc, /* tp_doc */
(traverseproc)odict_traverse, /* tp_traverse */
(inquiry)odict_tp_clear, /* tp_clear */
(richcmpfunc)odict_richcompare, /* tp_richcompare */
odict_traverse, /* tp_traverse */
odict_tp_clear, /* tp_clear */
odict_richcompare, /* tp_richcompare */
offsetof(PyODictObject, od_weakreflist), /* tp_weaklistoffset */
(getiterfunc)odict_iter, /* tp_iter */
odict_iter, /* tp_iter */
0, /* tp_iternext */
odict_methods, /* tp_methods */
0, /* tp_members */
Expand All @@ -1561,7 +1570,7 @@ PyTypeObject PyODict_Type = {
0, /* tp_descr_get */
0, /* tp_descr_set */
offsetof(PyODictObject, od_inst_dict), /* tp_dictoffset */
(initproc)odict_init, /* tp_init */
odict_init, /* tp_init */
PyType_GenericAlloc, /* tp_alloc */
0, /* tp_new */
0, /* tp_free */
Expand Down Expand Up @@ -1633,8 +1642,9 @@ typedef struct {
} odictiterobject;

static void
odictiter_dealloc(odictiterobject *di)
odictiter_dealloc(PyObject *op)
{
odictiterobject *di = (odictiterobject*)op;
_PyObject_GC_UNTRACK(di);
Py_XDECREF(di->di_odict);
Py_XDECREF(di->di_current);
Expand All @@ -1645,8 +1655,9 @@ odictiter_dealloc(odictiterobject *di)
}

static int
odictiter_traverse(odictiterobject *di, visitproc visit, void *arg)
odictiter_traverse(PyObject *op, visitproc visit, void *arg)
{
odictiterobject *di = (odictiterobject*)op;
Py_VISIT(di->di_odict);
Py_VISIT(di->di_current); /* A key could be any type, not just str. */
Py_VISIT(di->di_result);
Expand Down Expand Up @@ -1709,8 +1720,9 @@ odictiter_nextkey(odictiterobject *di)
}

static PyObject *
odictiter_iternext(odictiterobject *di)
odictiter_iternext(PyObject *op)
{
odictiterobject *di = (odictiterobject*)op;
PyObject *result, *value;
PyObject *key = odictiter_nextkey(di); /* new reference */

Expand Down Expand Up @@ -1776,8 +1788,10 @@ odictiter_iternext(odictiterobject *di)
PyDoc_STRVAR(reduce_doc, "Return state information for pickling");

static PyObject *
odictiter_reduce(odictiterobject *di, PyObject *Py_UNUSED(ignored))
odictiter_reduce(PyObject *op, PyObject *Py_UNUSED(ignored))
{
odictiterobject *di = (odictiterobject*)op;

/* copy the iterator state */
odictiterobject tmp = *di;
Py_XINCREF(tmp.di_odict);
Expand All @@ -1794,7 +1808,7 @@ odictiter_reduce(odictiterobject *di, PyObject *Py_UNUSED(ignored))
}

static PyMethodDef odictiter_methods[] = {
{"__reduce__", (PyCFunction)odictiter_reduce, METH_NOARGS, reduce_doc},
{"__reduce__", odictiter_reduce, METH_NOARGS, reduce_doc},
{NULL, NULL} /* sentinel */
};

Expand All @@ -1804,7 +1818,7 @@ PyTypeObject PyODictIter_Type = {
sizeof(odictiterobject), /* tp_basicsize */
0, /* tp_itemsize */
/* methods */
(destructor)odictiter_dealloc, /* tp_dealloc */
odictiter_dealloc, /* tp_dealloc */
0, /* tp_vectorcall_offset */
0, /* tp_getattr */
0, /* tp_setattr */
Expand All @@ -1821,12 +1835,12 @@ PyTypeObject PyODictIter_Type = {
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
0, /* tp_doc */
(traverseproc)odictiter_traverse, /* tp_traverse */
odictiter_traverse, /* tp_traverse */
0, /* tp_clear */
0, E567 /* tp_richcompare */
0, /* tp_weaklistoffset */
PyObject_SelfIter, /* tp_iter */
(iternextfunc)odictiter_iternext, /* tp_iternext */
odictiter_iternext, /* tp_iternext */
odictiter_methods, /* tp_methods */
0,
};
Expand Down Expand Up @@ -2001,8 +2015,9 @@ odictitems_new(PyObject *od, PyObject *Py_UNUSED(ignored))
/* values() */

static PyObject *
odictvalues_iter(_PyDictViewObject *dv)
odictvalues_iter(PyObject *op)
{
_PyDictViewObject *dv = (_PyDictViewObject*)op;
if (dv->dv_dict == NULL) {
Py_RETURN_NONE;
}
Expand All @@ -2011,8 +2026,9 @@ odictvalues_iter(_PyDictViewObject *dv)
}

static PyObject *
odictvalues_reversed(_PyDictViewObject *dv, PyObject *Py_UNUSED(ignored))
odictvalues_reversed(PyObject *op, PyObject *Py_UNUSED(ignored))
{
_PyDictViewObject *dv = (_PyDictViewObject*)op;
if (dv->dv_dict == NULL) {
Py_RETURN_NONE;
}
Expand All @@ -2021,7 +2037,7 @@ odictvalues_reversed(_PyDictViewObject *dv, PyObject *Py_UNUSED(ignored))
}

static PyMethodDef odictvalues_methods[] = {
{"__reversed__", (PyCFunction)odictvalues_reversed, METH_NOARGS, NULL},
{"__reversed__", odictvalues_reversed, METH_NOARGS, NULL},
{NULL, NULL} /* sentinel */
};

Expand Down Expand Up @@ -2051,7 +2067,7 @@ PyTypeObject PyODictValues_Type = {
0, /* tp_clear */
0, /* tp_richcompare */
0, /* tp_weaklistoffset */
(getiterfunc)odictvalues_iter, /* tp_iter */
odictvalues_iter, /* tp_iter */
0, /* tp_iternext */
odictvalues_methods, /* tp_methods */
0, /* tp_members */
Expand Down
Loading
0