--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/Doc/c-api/iter.rst Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,50 @@
+.. highlightlang:: c
+
+.. _iterator:
+
+Iterator Protocol
+=================
+
+.. versionadded:: 2.2
+
+There are only a couple of functions specifically for working with iterators.
+
+
+.. cfunction:: int PyIter_Check(PyObject *o)
+
+ Return true if the object *o* supports the iterator protocol.
+
+
+.. cfunction:: PyObject* PyIter_Next(PyObject *o)
+
+ Return the next value from the iteration *o*. If the object is an iterator,
+ this retrieves the next value from the iteration, and returns *NULL* with no
+ exception set if there are no remaining items. If the object is not an
+ iterator, :exc:`TypeError` is raised, or if there is an error in retrieving the
+ item, returns *NULL* and passes along the exception.
+
+To write a loop which iterates over an iterator, the C code should look
+something like this::
+
+ PyObject *iterator = PyObject_GetIter(obj);
+ PyObject *item;
+
+ if (iterator == NULL) {
+ /* propagate error */
+ }
+
+ while (item = PyIter_Next(iterator)) {
+ /* do something with item */
+ ...
+ /* release reference when done */
+ Py_DECREF(item);
+ }
+
+ Py_DECREF(iterator);
+
+ if (PyErr_Occurred()) {
+ /* propagate error */
+ }
+ else {
+ /* continue doing useful work */
+ }