[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