[Python-checkins] CVS: python/dist/src/Doc/api api.tex,1.118,1.119

Fred L. Drake fdrake@users.sourceforge.net
Mon, 07 May 2001 10:42:21 -0700


Update of /cvsroot/python/python/dist/src/Doc/api
In directory usw-pr-cvs1:/tmp/cvs-serv31750/api

Modified Files:
	api.tex 
Log Message:

Added documentation for PyIter_Check() and PyIter_Next().

Wrapped a long line.


Index: api.tex
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/api/api.tex,v
retrieving revision 1.118
retrieving revision 1.119
diff -C2 -r1.118 -r1.119
*** api.tex	2001/04/23 14:44:21	1.118
--- api.tex	2001/05/07 17:42:18	1.119
***************
*** 2083,2091 ****
  \end{cfuncdesc}
  
! \begin{cfuncdesc}{int}{PyMapping_SetItemString}{PyObject *o, char *key, PyObject *v}
  Map the object \var{key} to the value \var{v} in object \var{o}.
  Returns \code{-1} on failure.  This is the equivalent of the Python
  statement \samp{\var{o}[\var{key}] = \var{v}}.
  \end{cfuncdesc}
  
  
--- 2083,2129 ----
  \end{cfuncdesc}
  
! \begin{cfuncdesc}{int}{PyMapping_SetItemString}{PyObject *o, char *key,
!                                                 PyObject *v}
  Map the object \var{key} to the value \var{v} in object \var{o}.
  Returns \code{-1} on failure.  This is the equivalent of the Python
  statement \samp{\var{o}[\var{key}] = \var{v}}.
  \end{cfuncdesc}
+ 
+ 
+ \section{Iterator Protocol \label{iterator}}
+ 
+ There are only a couple of functions specifically for working with
+ iterators.
+ 
+ \begin{cfuncdesc}{int}{PyIter_Check}{PyObject *o}
+   Return true if the object \var{o} supports the iterator protocol.
+ \end{cfuncdesc}
+ 
+ \begin{cfuncdesc}{PyObject*}{PyIter_Next}{PyObject *o}
+   Return the next value from the iteration \var{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, \exception{TypeError} is
+   raised, or if there is an error in retrieving the item, returns
+   \NULL{} and passes along the exception.
+ \end{cfuncdesc}
+ 
+ To write a loop which iterates over an iterator, the C code should
+ look something like this:
+ 
+ \begin{verbatim}
+ PyObject *iterator = ...;
+ PyObject *item;
+ 
+ while (item = PyIter_Next(iter)) {
+     /* do something with item */
+ }
+ if (PyErr_Occurred()) {
+     /* propogate error */
+ }
+ else {
+     /* continue doing useful work */
+ }
+ \end{verbatim}