[Python-checkins] CVS: python/dist/src/Objects typeobject.c,2.19,2.20

Guido van Rossum gvanrossum@users.sourceforge.net
2001年8月02日 08:32:00 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv3131
Modified Files:
	typeobject.c 
Log Message:
Fix SF #442791 (revisited): No __delitem__ wrapper was defined.
Index: typeobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/typeobject.c,v
retrieving revision 2.19
retrieving revision 2.20
diff -C2 -d -r2.19 -r2.20
*** typeobject.c	2001年08月02日 04:15:00	2.19
--- typeobject.c	2001年08月02日 15:31:58	2.20
***************
*** 1505,1511 ****
--- 1505,1528 ----
 }
 
+ 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[] = {
 	{"__setitem__", (wrapperfunc)wrap_intobjargproc,
 	 "x.__setitem__(i, y) <==> x[i]=y"},
+ 	{"__delitem__", (wrapperfunc)wrap_delitem_int,
+ 	 "x.__delitem__(y) <==> del x[y]"},
 	{0}
 };
***************
*** 1571,1577 ****
--- 1588,1612 ----
 }
 
+ 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[] = {
 	{"__setitem__", (wrapperfunc)wrap_objobjargproc,
 	 "x.__setitem__(y, z) <==> x[y]=z"},
+ 	{"__delitem__", (wrapperfunc)wrap_delitem,
+ 	 "x.__delitem__(y) <==> del x[y]"},
 	{0}
 };

AltStyle によって変換されたページ (->オリジナル) /