summaryrefslogtreecommitdiffstats
path: root/Objects/iterobject.c
Commit message (Collapse)AuthorAgeFilesLines
* Squash a few calls to the hideously expensive PyObject_CallObject(o,a)Guido van Rossum2002-08-161-1/+6
| | | | | | | -- replace then with slightly faster PyObject_Call(o,a,NULL). (The difference is that the latter requires a to be a tuple; the former allows other values and wraps them in a tuple if necessary; it involves two more levels of C function calls to accomplish all that.)
* Moved special case for tuples from iterobject.c toRaymond Hettinger2002-08-091-24/+11
| | | | | | tupleobject.c. Makes the code in iterobject.c cleaner and speeds-up the general case by not checking for tuples everytime. SF Patch #592065.
* Make StopIteration a sink state. This is done by clearing out theGuido van Rossum2002-07-161-62/+47
| | | | | | | | | | object references (it_seq for seqiterobject, it_callable and it_sentinel for calliterobject) when the end of the list is reached. Also remove the next() methods -- one is supplied automatically by PyType_Ready() because the tp_iternext slot is set. That's a good thing, because the implementation given here was buggy (it never raised StopIteration).
* SF 560736. Optimize list iteration by filling the tp_iter slot.Raymond Hettinger2002-05-311-17/+7
|
* Patch #552433: Special-case tuples. Avoid sub-type checking for lists.Martin v. Löwis2002-05-081-2/+18
| | | | | Avoid checks for negative indices and duplicate checks for support of the sequence protocol.
* Re-enable GC of iter objects.Neil Schemenauer2002-03-181-14/+12
|
* Patch #427190: Implement and use METH_NOARGS and METH_O.Martin v. Löwis2001-08-161-2/+2
|
* Merge of descr-branch back into trunk.Tim Peters2001-08-021-16/+18
|
* GC for iterator objects.Neil Schemenauer2001-07-121-6/+29
|
* Discard a misleading comment about iter_iternext().Guido van Rossum2001-05-011-1/+0
|
* Mondo changes to the iterator stuff, without changing how Python codeGuido van Rossum2001-04-231-21/+63
| | | | | | | | | | | | | | | | | | | | | | | | sees it (test_iter.py is unchanged). - Added a tp_iternext slot, which calls the iterator's next() method; this is much faster for built-in iterators over built-in types such as lists and dicts, speeding up pybench's ForLoop with about 25% compared to Python 2.1. (Now there's a good argument for iterators. ;-) - Renamed the built-in sequence iterator SeqIter, affecting the C API functions for it. (This frees up the PyIter prefix for generic iterator operations.) - Added PyIter_Check(obj), which checks that obj's type has a tp_iternext slot and that the proper feature flag is set. - Added PyIter_Next(obj) which calls the tp_iternext slot. It has a somewhat complex return condition due to the need for speed: when it returns NULL, it may not have set an exception condition, meaning the iterator is exhausted; when the exception StopIteration is set (or a derived exception class), it means the same thing; any other exception means some other error occurred.
* Adding iterobject.[ch], which were accidentally not added. Sorry\!Guido van Rossum2001-04-201-0/+188