Fix SF #442791 (revisited): No __delitem__ wrapper was defined.

This commit is contained in:
Guido van Rossum 2001-08-02 15:31:58 +00:00
parent 388f37e6f6
commit 2b8d7bdd77
1 changed files with 35 additions and 0 deletions

View File

@ -1504,9 +1504,26 @@ wrap_intobjargproc(PyObject *self, PyObject *args, void *wrapped)
return Py_None; return Py_None;
} }
static PyObject *
wrap_delitem_int(PyObject *self, PyObject *args, void *wrapped)
{
intobjargproc func = (intobjargproc)wrapped;
int i, res;
if (!PyArg_ParseTuple(args, "i", &i))
return NULL;
res = (*func)(self, i, NULL);
if (res == -1 && PyErr_Occurred())
return NULL;
Py_INCREF(Py_None);
return Py_None;
}
static struct wrapperbase tab_setitem_int[] = { static struct wrapperbase tab_setitem_int[] = {
{"__setitem__", (wrapperfunc)wrap_intobjargproc, {"__setitem__", (wrapperfunc)wrap_intobjargproc,
"x.__setitem__(i, y) <==> x[i]=y"}, "x.__setitem__(i, y) <==> x[i]=y"},
{"__delitem__", (wrapperfunc)wrap_delitem_int,
"x.__delitem__(y) <==> del x[y]"},
{0} {0}
}; };
@ -1570,9 +1587,27 @@ wrap_objobjargproc(PyObject *self, PyObject *args, void *wrapped)
return Py_None; return Py_None;
} }
static PyObject *
wrap_delitem(PyObject *self, PyObject *args, void *wrapped)
{
objobjargproc func = (objobjargproc)wrapped;
int res;
PyObject *key;
if (!PyArg_ParseTuple(args, "O", &key))
return NULL;
res = (*func)(self, key, NULL);
if (res == -1 && PyErr_Occurred())
return NULL;
Py_INCREF(Py_None);
return Py_None;
}
static struct wrapperbase tab_setitem[] = { static struct wrapperbase tab_setitem[] = {
{"__setitem__", (wrapperfunc)wrap_objobjargproc, {"__setitem__", (wrapperfunc)wrap_objobjargproc,
"x.__setitem__(y, z) <==> x[y]=z"}, "x.__setitem__(y, z) <==> x[y]=z"},
{"__delitem__", (wrapperfunc)wrap_delitem,
"x.__delitem__(y) <==> del x[y]"},
{0} {0}
}; };