[Python-checkins] python/dist/src/Objects iterobject.c, 1.16, 1.17 listobject.c, 2.198, 2.199 tupleobject.c, 2.85, 2.86

rhettinger at users.sourceforge.net rhettinger at users.sourceforge.net
Thu Mar 18 17:43:12 EST 2004


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

Modified Files:
	iterobject.c listobject.c tupleobject.c 
Log Message:
Make iterators length transparent where possible.

Index: iterobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/iterobject.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** iterobject.c	25 Jun 2003 13:12:18 -0000	1.16
--- iterobject.c	18 Mar 2004 22:43:09 -0000	1.17
***************
*** 72,75 ****
--- 72,88 ----
  }
  
+ static int
+ iter_len(seqiterobject *it)
+ {
+ 	if (it->it_seq)
+ 		return PyObject_Size(it->it_seq) - it->it_index;
+ 	return 0;
+ }
+ 
+ static PySequenceMethods iter_as_sequence = {
+ 	(inquiry)iter_len,		/* sq_length */
+ 	0,				/* sq_concat */
+ };
+ 
  PyTypeObject PySeqIter_Type = {
  	PyObject_HEAD_INIT(&PyType_Type)
***************
*** 86,90 ****
  	0,					/* tp_repr */
  	0,					/* tp_as_number */
! 	0,					/* tp_as_sequence */
  	0,					/* tp_as_mapping */
  	0,					/* tp_hash */
--- 99,103 ----
  	0,					/* tp_repr */
  	0,					/* tp_as_number */
! 	&iter_as_sequence,			/* tp_as_sequence */
  	0,					/* tp_as_mapping */
  	0,					/* tp_hash */

Index: listobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/listobject.c,v
retrieving revision 2.198
retrieving revision 2.199
diff -C2 -d -r2.198 -r2.199
*** listobject.c	15 Mar 2004 09:01:31 -0000	2.198
--- listobject.c	18 Mar 2004 22:43:09 -0000	2.199
***************
*** 2708,2711 ****
--- 2708,2724 ----
  }
  
+ static int
+ listiter_len(listiterobject *it)
+ {
+ 	if (it->it_seq)
+ 		return PyList_GET_SIZE(it->it_seq) - it->it_index;
+ 	return 0;
+ }
+ 
+ static PySequenceMethods listiter_as_sequence = {
+ 	(inquiry)listiter_len,		/* sq_length */
+ 	0,				/* sq_concat */
+ };
+ 
  PyTypeObject PyListIter_Type = {
  	PyObject_HEAD_INIT(&PyType_Type)
***************
*** 2722,2726 ****
  	0,					/* tp_repr */
  	0,					/* tp_as_number */
! 	0,					/* tp_as_sequence */
  	0,					/* tp_as_mapping */
  	0,					/* tp_hash */
--- 2735,2739 ----
  	0,					/* tp_repr */
  	0,					/* tp_as_number */
! 	&listiter_as_sequence,			/* tp_as_sequence */
  	0,					/* tp_as_mapping */
  	0,					/* tp_hash */

Index: tupleobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/tupleobject.c,v
retrieving revision 2.85
retrieving revision 2.86
diff -C2 -d -r2.85 -r2.86
*** tupleobject.c	15 Mar 2004 00:16:34 -0000	2.85
--- tupleobject.c	18 Mar 2004 22:43:10 -0000	2.86
***************
*** 840,843 ****
--- 840,856 ----
  }
  
+ static int
+ tupleiter_len(tupleiterobject *it)
+ {
+ 	if (it->it_seq)
+ 		return PyTuple_GET_SIZE(it->it_seq) - it->it_index;
+ 	return 0;
+ }
+ 
+ static PySequenceMethods tupleiter_as_sequence = {
+ 	(inquiry)tupleiter_len,		/* sq_length */
+ 	0,				/* sq_concat */
+ };
+ 
  PyTypeObject PyTupleIter_Type = {
  	PyObject_HEAD_INIT(&PyType_Type)
***************
*** 854,858 ****
  	0,					/* tp_repr */
  	0,					/* tp_as_number */
! 	0,					/* tp_as_sequence */
  	0,					/* tp_as_mapping */
  	0,					/* tp_hash */
--- 867,871 ----
  	0,					/* tp_repr */
  	0,					/* tp_as_number */
! 	&tupleiter_as_sequence,			/* tp_as_sequence */
  	0,					/* tp_as_mapping */
  	0,					/* tp_hash */




More information about the Python-checkins mailing list