[Python-checkins] python/dist/src/Objects setobject.c,1.22,1.23

rhettinger at users.sourceforge.net rhettinger at users.sourceforge.net
Sun May 30 03:26:49 EDT 2004


Update of /cvsroot/python/python/dist/src/Objects
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv735/Objects

Modified Files:
	setobject.c 
Log Message:
Make sets and deques weak referencable.



Index: setobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/setobject.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -C2 -d -r1.22 -r1.23
*** setobject.c	8 Mar 2004 18:31:10 -0000	1.22
--- setobject.c	30 May 2004 07:26:45 -0000	1.23
***************
*** 1,3 ****
--- 1,4 ----
  #include "Python.h"
+ #include "structmember.h"
  
  /* set object implementation 
***************
*** 62,65 ****
--- 63,67 ----
  	so->data = data;
  	so->hash = -1;
+ 	so->weakreflist = NULL;
  
  	if (iterable != NULL) {
***************
*** 114,117 ****
--- 116,121 ----
  {
  	PyObject_GC_UnTrack(so);
+ 	if (so->weakreflist != NULL)
+ 		PyObject_ClearWeakRefs((PyObject *) so);
  	Py_XDECREF(so->data);
  	so->ob_type->tp_free(so);
***************
*** 1010,1019 ****
  	0,				/* tp_as_buffer */
  	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_CHECKTYPES |
! 		Py_TPFLAGS_BASETYPE,	/* tp_flags */
  	set_doc,			/* tp_doc */
  	(traverseproc)set_traverse,	/* tp_traverse */
  	(inquiry)set_tp_clear,		/* tp_clear */
  	(richcmpfunc)set_richcompare,	/* tp_richcompare */
! 	0,				/* tp_weaklistoffset */
  	(getiterfunc)set_iter,		/* tp_iter */
  	0,				/* tp_iternext */
--- 1014,1023 ----
  	0,				/* tp_as_buffer */
  	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_CHECKTYPES |
! 		Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_WEAKREFS,	/* tp_flags */
  	set_doc,			/* tp_doc */
  	(traverseproc)set_traverse,	/* tp_traverse */
  	(inquiry)set_tp_clear,		/* tp_clear */
  	(richcmpfunc)set_richcompare,	/* tp_richcompare */
! 	offsetof(PySetObject, weakreflist),	/* tp_weaklistoffset */
  	(getiterfunc)set_iter,		/* tp_iter */
  	0,				/* tp_iternext */
***************
*** 1105,1114 ****
  	0,				/* tp_as_buffer */
  	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_CHECKTYPES |
! 		Py_TPFLAGS_BASETYPE,	/* tp_flags */
  	frozenset_doc,			/* tp_doc */
  	(traverseproc)set_traverse,	/* tp_traverse */
  	0,				/* tp_clear */
  	(richcmpfunc)set_richcompare,	/* tp_richcompare */
! 	0,				/* tp_weaklistoffset */
  	(getiterfunc)set_iter,		/* tp_iter */
  	0,				/* tp_iternext */
--- 1109,1118 ----
  	0,				/* tp_as_buffer */
  	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_CHECKTYPES |
! 		Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_WEAKREFS,	/* tp_flags */
  	frozenset_doc,			/* tp_doc */
  	(traverseproc)set_traverse,	/* tp_traverse */
  	0,				/* tp_clear */
  	(richcmpfunc)set_richcompare,	/* tp_richcompare */
! 	offsetof(PySetObject, weakreflist),	/* tp_weaklistoffset */
  	(getiterfunc)set_iter,		/* tp_iter */
  	0,				/* tp_iternext */




More information about the Python-checkins mailing list