[Python-checkins] python/dist/src/Objects setobject.c,1.16,1.17
rhettinger at users.sourceforge.net
rhettinger at users.sourceforge.net
Sat Dec 13 13:53:20 EST 2003
Update of /cvsroot/python/python/dist/src/Objects
In directory sc8-pr-cvs1:/tmp/cvs-serv10758
Modified Files:
setobject.c
Log Message:
Refactor set.discard() and set.remove().
Index: setobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/setobject.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** setobject.c 13 Dec 2003 14:46:46 -0000 1.16
--- setobject.c 13 Dec 2003 18:53:18 -0000 1.17
***************
*** 778,796 ****
set_remove(PySetObject *so, PyObject *item)
{
! PyObject *tmp;
! if (PyDict_DelItem(so->data, item) == -1) {
! if (!PyType_IsSubtype(item->ob_type, &PySet_Type))
! return NULL;
! PyErr_Clear();
tmp = frozenset_dict_wrapper(((PySetObject *)(item))->data);
if (tmp == NULL)
return NULL;
! if (PyDict_DelItem(so->data, tmp) == -1) {
! Py_DECREF(tmp);
! return NULL;
! }
Py_DECREF(tmp);
}
Py_INCREF(Py_None);
return Py_None;
--- 778,794 ----
set_remove(PySetObject *so, PyObject *item)
{
! PyObject *tmp, *result;
! if (PyType_IsSubtype(item->ob_type, &PySet_Type)) {
tmp = frozenset_dict_wrapper(((PySetObject *)(item))->data);
if (tmp == NULL)
return NULL;
! result = set_remove(so, tmp);
Py_DECREF(tmp);
+ return result;
}
+
+ if (PyDict_DelItem(so->data, item) == -1)
+ return NULL;
Py_INCREF(Py_None);
return Py_None;
***************
*** 805,830 ****
set_discard(PySetObject *so, PyObject *item)
{
! PyObject *tmp;
if (PyDict_DelItem(so->data, item) == -1) {
! if (PyErr_ExceptionMatches(PyExc_KeyError))
! PyErr_Clear();
! else {
! if (!PyType_IsSubtype(item->ob_type, &PySet_Type))
! return NULL;
! PyErr_Clear();
! tmp = frozenset_dict_wrapper(((PySetObject *)(item))->data);
! if (tmp == NULL)
! return NULL;
! if (PyDict_DelItem(so->data, tmp) == -1) {
! if (PyErr_ExceptionMatches(PyExc_KeyError))
! PyErr_Clear();
! else {
! Py_DECREF(tmp);
! return NULL;
! }
! }
! Py_DECREF(tmp);
! }
}
Py_INCREF(Py_None);
--- 803,821 ----
set_discard(PySetObject *so, PyObject *item)
{
! PyObject *tmp, *result;
!
! if (PyType_IsSubtype(item->ob_type, &PySet_Type)) {
! tmp = frozenset_dict_wrapper(((PySetObject *)(item))->data);
! if (tmp == NULL)
! return NULL;
! result = set_discard(so, tmp);
! Py_DECREF(tmp);
! return result;
! }
if (PyDict_DelItem(so->data, item) == -1) {
! if (!PyErr_ExceptionMatches(PyExc_KeyError))
! return NULL;
! PyErr_Clear();
}
Py_INCREF(Py_None);
***************
*** 917,921 ****
{"clear", (PyCFunction)set_clear, METH_NOARGS,
clear_doc},
! {"__contains__", (PyCFunction)set_direct_contains, METH_O | METH_COEXIST,
contains_doc},
{"copy", (PyCFunction)set_copy, METH_NOARGS,
--- 908,912 ----
{"clear", (PyCFunction)set_clear, METH_NOARGS,
clear_doc},
! {"__contains__",(PyCFunction)set_direct_contains, METH_O | METH_COEXIST,
contains_doc},
{"copy", (PyCFunction)set_copy, METH_NOARGS,
***************
*** 1045,1049 ****
static PyMethodDef frozenset_methods[] = {
! {"__contains__", (PyCFunction)set_direct_contains, METH_O | METH_COEXIST,
contains_doc},
{"copy", (PyCFunction)frozenset_copy, METH_NOARGS,
--- 1036,1040 ----
static PyMethodDef frozenset_methods[] = {
! {"__contains__",(PyCFunction)set_direct_contains, METH_O | METH_COEXIST,
contains_doc},
{"copy", (PyCFunction)frozenset_copy, METH_NOARGS,
More information about the Python-checkins
mailing list