[Python-checkins] python/dist/src/Modules collectionsmodule.c, 1.15, 1.16

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/Modules
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv735/Modules

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



Index: collectionsmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/collectionsmodule.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** collectionsmodule.c	18 May 2004 18:15:03 -0000	1.15
--- collectionsmodule.c	30 May 2004 07:26:46 -0000	1.16
***************
*** 1,3 ****
--- 1,4 ----
  #include "Python.h"
+ #include "structmember.h"
  
  /* collections module implementation of a deque() datatype
***************
*** 33,36 ****
--- 34,38 ----
  	int rightindex;
  	int len;
+ 	PyObject *weakreflist; /* List of weak references */
  } dequeobject;
  
***************
*** 59,62 ****
--- 61,65 ----
  	deque->rightindex = BLOCKLEN / 2;
  	deque->len = 0;
+ 	deque->weakreflist = NULL;
  
  	return (PyObject *)deque;
***************
*** 440,443 ****
--- 443,448 ----
  {
  	PyObject_GC_UnTrack(deque);
+ 	if (deque->weakreflist != NULL)
+ 		PyObject_ClearWeakRefs((PyObject *) deque);
  	if (deque->leftblock != NULL) {
  		int err = deque_clear(deque);
***************
*** 745,754 ****
  	0,				/* tp_setattro */
  	0,				/* tp_as_buffer */
! 	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,	/* tp_flags */
  	deque_doc,			/* tp_doc */
  	(traverseproc)deque_traverse,	/* tp_traverse */
  	(inquiry)deque_clear,		/* tp_clear */
  	(richcmpfunc)deque_richcompare,	/* tp_richcompare */
! 	0,				/* tp_weaklistoffset*/
  	(getiterfunc)deque_iter,	/* tp_iter */
  	0,				/* tp_iternext */
--- 750,760 ----
  	0,				/* tp_setattro */
  	0,				/* tp_as_buffer */
! 	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC |
! 		Py_TPFLAGS_HAVE_WEAKREFS,	/* tp_flags */
  	deque_doc,			/* tp_doc */
  	(traverseproc)deque_traverse,	/* tp_traverse */
  	(inquiry)deque_clear,		/* tp_clear */
  	(richcmpfunc)deque_richcompare,	/* tp_richcompare */
! 	offsetof(dequeobject, weakreflist),	/* tp_weaklistoffset*/
  	(getiterfunc)deque_iter,	/* tp_iter */
  	0,				/* tp_iternext */




More information about the Python-checkins mailing list