[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