blob: 0822f620ee389f48764578e84962076a8ef8f1b7 [file] [log] [blame]
Fred Drake3adf79e2001-10-12 19:01:43 +00001\chapter{Abstract Objects Layer \label{abstract}}
2
3The functions in this chapter interact with Python objects regardless
4of their type, or with wide classes of object types (e.g. all
5numerical types, or all sequence types). When used on object types
6for which they do not apply, they will raise a Python exception.
7
8
9\section{Object Protocol \label{object}}
10
11\begin{cfuncdesc}{int}{PyObject_Print}{PyObject *o, FILE *fp, int flags}
12 Print an object \var{o}, on file \var{fp}. Returns \code{-1} on
13 error. The flags argument is used to enable certain printing
14 options. The only option currently supported is
15 \constant{Py_PRINT_RAW}; if given, the \function{str()} of the
16 object is written instead of the \function{repr()}.
17\end{cfuncdesc}
18
19\begin{cfuncdesc}{int}{PyObject_HasAttrString}{PyObject *o, char *attr_name}
20 Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
21 \code{0} otherwise. This is equivalent to the Python expression
22 \samp{hasattr(\var{o}, \var{attr_name})}. This function always
23 succeeds.
24\end{cfuncdesc}
25
26\begin{cfuncdesc}{PyObject*}{PyObject_GetAttrString}{PyObject *o,
27 char *attr_name}
28 Retrieve an attribute named \var{attr_name} from object \var{o}.
29 Returns the attribute value on success, or \NULL{} on failure.
30 This is the equivalent of the Python expression
31 \samp{\var{o}.\var{attr_name}}.
32\end{cfuncdesc}
33
34
35\begin{cfuncdesc}{int}{PyObject_HasAttr}{PyObject *o, PyObject *attr_name}
36 Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
37 \code{0} otherwise. This is equivalent to the Python expression
38 \samp{hasattr(\var{o}, \var{attr_name})}. This function always
39 succeeds.
40\end{cfuncdesc}
41
42
43\begin{cfuncdesc}{PyObject*}{PyObject_GetAttr}{PyObject *o,
44 PyObject *attr_name}
45 Retrieve an attribute named \var{attr_name} from object \var{o}.
46 Returns the attribute value on success, or \NULL{} on failure. This
47 is the equivalent of the Python expression
48 \samp{\var{o}.\var{attr_name}}.
49\end{cfuncdesc}
50
51
52\begin{cfuncdesc}{int}{PyObject_SetAttrString}{PyObject *o,
53 char *attr_name, PyObject *v}
54 Set the value of the attribute named \var{attr_name}, for object
55 \var{o}, to the value \var{v}. Returns \code{-1} on failure. This
56 is the equivalent of the Python statement
57 \samp{\var{o}.\var{attr_name} = \var{v}}.
58\end{cfuncdesc}
59
60
61\begin{cfuncdesc}{int}{PyObject_SetAttr}{PyObject *o,
62 PyObject *attr_name, PyObject *v}
63 Set the value of the attribute named \var{attr_name}, for object
64 \var{o}, to the value \var{v}. Returns \code{-1} on failure. This
65 is the equivalent of the Python statement
66 \samp{\var{o}.\var{attr_name} = \var{v}}.
67\end{cfuncdesc}
68
69
70\begin{cfuncdesc}{int}{PyObject_DelAttrString}{PyObject *o, char *attr_name}
71 Delete attribute named \var{attr_name}, for object \var{o}. Returns
72 \code{-1} on failure. This is the equivalent of the Python
73 statement: \samp{del \var{o}.\var{attr_name}}.
74\end{cfuncdesc}
75
76
77\begin{cfuncdesc}{int}{PyObject_DelAttr}{PyObject *o, PyObject *attr_name}
78 Delete attribute named \var{attr_name}, for object \var{o}. Returns
79 \code{-1} on failure. This is the equivalent of the Python
80 statement \samp{del \var{o}.\var{attr_name}}.
81\end{cfuncdesc}
82
83
Fred Drake178153f2002-06-13 11:51:48 +000084\begin{cfuncdesc}{PyObject*}{PyObject_RichCompare}{PyObject *o1,
Fred Drakea0c5e9f2002-06-14 14:35:56 +000085 PyObject *o2, int opid}
Fred Drake178153f2002-06-13 11:51:48 +000086 Compare the values of \var{o1} and \var{o2} using the operation
Fred Drakea0c5e9f2002-06-14 14:35:56 +000087 specified by \var{opid}, which must be one of
Fred Drake178153f2002-06-13 11:51:48 +000088 \constant{Py_LT},
89 \constant{Py_LE},
90 \constant{Py_EQ},
91 \constant{Py_NE},
92 \constant{Py_GT}, or
93 \constant{Py_GE}, corresponding to
94 \code{<},
95 \code{<=},
96 \code{==},
97 \code{!=},
98 \code{>}, or
99 \code{>=} respectively. This is the equivalent of the Python expression
Fred Drakea0c5e9f2002-06-14 14:35:56 +0000100 \samp{\var{o1} op \var{o2}}, where \code{op} is the operator
101 corresponding to \var{opid}. Returns the value of the comparison on
Fred Drake178153f2002-06-13 11:51:48 +0000102 success, or \NULL{} on failure.
103\end{cfuncdesc}
104
105\begin{cfuncdesc}{int}{PyObject_RichCompareBool}{PyObject *o1,
Fred Drakea0c5e9f2002-06-14 14:35:56 +0000106 PyObject *o2, int opid}
Fred Drake178153f2002-06-13 11:51:48 +0000107 Compare the values of \var{o1} and \var{o2} using the operation
Fred Drakea0c5e9f2002-06-14 14:35:56 +0000108 specified by \var{opid}, which must be one of
Fred Drake178153f2002-06-13 11:51:48 +0000109 \constant{Py_LT},
110 \constant{Py_LE},
111 \constant{Py_EQ},
112 \constant{Py_NE},
113 \constant{Py_GT}, or
114 \constant{Py_GE}, corresponding to
115 \code{<},
116 \code{<=},
117 \code{==},
118 \code{!=},
119 \code{>}, or
120 \code{>=} respectively. Returns \code{-1} on error, \code{0} if the
121 result is false, \code{1} otherwise. This is the equivalent of the
Fred Drakea0c5e9f2002-06-14 14:35:56 +0000122 Python expression \samp{\var{o1} op \var{o2}}, where
123 \code{op} is the operator corresponding to \var{opid}.
Fred Drake178153f2002-06-13 11:51:48 +0000124\end{cfuncdesc}
125
Fred Drake3adf79e2001-10-12 19:01:43 +0000126\begin{cfuncdesc}{int}{PyObject_Cmp}{PyObject *o1, PyObject *o2, int *result}
127 Compare the values of \var{o1} and \var{o2} using a routine provided
128 by \var{o1}, if one exists, otherwise with a routine provided by
129 \var{o2}. The result of the comparison is returned in
130 \var{result}. Returns \code{-1} on failure. This is the equivalent
131 of the Python statement\bifuncindex{cmp} \samp{\var{result} =
132 cmp(\var{o1}, \var{o2})}.
133\end{cfuncdesc}
134
135
136\begin{cfuncdesc}{int}{PyObject_Compare}{PyObject *o1, PyObject *o2}
137 Compare the values of \var{o1} and \var{o2} using a routine provided
138 by \var{o1}, if one exists, otherwise with a routine provided by
139 \var{o2}. Returns the result of the comparison on success. On
140 error, the value returned is undefined; use
141 \cfunction{PyErr_Occurred()} to detect an error. This is equivalent
142 to the Python expression\bifuncindex{cmp} \samp{cmp(\var{o1},
143 \var{o2})}.
144\end{cfuncdesc}
145
146
147\begin{cfuncdesc}{PyObject*}{PyObject_Repr}{PyObject *o}
148 Compute a string representation of object \var{o}. Returns the
149 string representation on success, \NULL{} on failure. This is the
150 equivalent of the Python expression \samp{repr(\var{o})}. Called by
151 the \function{repr()}\bifuncindex{repr} built-in function and by
152 reverse quotes.
153\end{cfuncdesc}
154
155
156\begin{cfuncdesc}{PyObject*}{PyObject_Str}{PyObject *o}
157 Compute a string representation of object \var{o}. Returns the
158 string representation on success, \NULL{} on failure. This is the
159 equivalent of the Python expression \samp{str(\var{o})}. Called by
160 the \function{str()}\bifuncindex{str} built-in function and by the
161 \keyword{print} statement.
162\end{cfuncdesc}
163
164
165\begin{cfuncdesc}{PyObject*}{PyObject_Unicode}{PyObject *o}
166 Compute a Unicode string representation of object \var{o}. Returns
167 the Unicode string representation on success, \NULL{} on failure.
168 This is the equivalent of the Python expression
Neal Norwitz4ddfd502002-07-28 13:55:20 +0000169 \samp{unicode(\var{o})}. Called by the
170 \function{unicode()}\bifuncindex{unicode} built-in function.
Fred Drake3adf79e2001-10-12 19:01:43 +0000171\end{cfuncdesc}
172
173\begin{cfuncdesc}{int}{PyObject_IsInstance}{PyObject *inst, PyObject *cls}
Fred Drakeb957bc32002-04-23 18:15:44 +0000174 Returns \code{1} if \var{inst} is an instance of the class \var{cls}
175 or a subclass of \var{cls}, or \code{0} if not. On error, returns
176 \code{-1} and sets an exception. If \var{cls} is a type object
177 rather than a class object, \cfunction{PyObject_IsInstance()}
Walter Dörwald6d5f30e2002-12-06 10:09:16 +0000178 returns \code{1} if \var{inst} is of type \var{cls}. If \var{cls}
179 is a tuple, the check will be done against every entry in \var{cls}.
180 The result will be \code{1} when at least one of the checks returns
181 \code{1}, otherwise it will be \code{0}. If \var{inst} is not a class
182 instance and \var{cls} is neither a type object, nor a class object,
183 nor a tuple, \var{inst} must have a \member{__class__} attribute
Fred Drakeb957bc32002-04-23 18:15:44 +0000184 --- the class relationship of the value of that attribute with
185 \var{cls} will be used to determine the result of this function.
Fred Drake3adf79e2001-10-12 19:01:43 +0000186 \versionadded{2.1}
Walter Dörwald6d5f30e2002-12-06 10:09:16 +0000187 \versionchanged[Support for a tuple as the second argument added]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +0000188\end{cfuncdesc}
189
190Subclass determination is done in a fairly straightforward way, but
191includes a wrinkle that implementors of extensions to the class system
192may want to be aware of. If \class{A} and \class{B} are class
193objects, \class{B} is a subclass of \class{A} if it inherits from
194\class{A} either directly or indirectly. If either is not a class
195object, a more general mechanism is used to determine the class
196relationship of the two objects. When testing if \var{B} is a
197subclass of \var{A}, if \var{A} is \var{B},
198\cfunction{PyObject_IsSubclass()} returns true. If \var{A} and
199\var{B} are different objects, \var{B}'s \member{__bases__} attribute
200is searched in a depth-first fashion for \var{A} --- the presence of
201the \member{__bases__} attribute is considered sufficient for this
202determination.
203
204\begin{cfuncdesc}{int}{PyObject_IsSubclass}{PyObject *derived,
205 PyObject *cls}
206 Returns \code{1} if the class \var{derived} is identical to or
207 derived from the class \var{cls}, otherwise returns \code{0}. In
Walter Dörwaldd9a6ad32002-12-12 16:41:44 +0000208 case of an error, returns \code{-1}. If \var{cls}
209 is a tuple, the check will be done against every entry in \var{cls}.
210 The result will be \code{1} when at least one of the checks returns
211 \code{1}, otherwise it will be \code{0}. If either \var{derived} or
212 \var{cls} is not an actual class object (or tuple), this function
213 uses the generic algorithm described above.
Fred Drake3adf79e2001-10-12 19:01:43 +0000214 \versionadded{2.1}
Walter Dörwaldd9a6ad32002-12-12 16:41:44 +0000215 \versionchanged[Older versions of Python did not support a tuple
216 as the second argument]{2.3}
Fred Drake3adf79e2001-10-12 19:01:43 +0000217\end{cfuncdesc}
218
219
220\begin{cfuncdesc}{int}{PyCallable_Check}{PyObject *o}
221 Determine if the object \var{o} is callable. Return \code{1} if the
222 object is callable and \code{0} otherwise. This function always
223 succeeds.
224\end{cfuncdesc}
225
226
Fred Drake0e0b6182002-04-15 20:51:19 +0000227\begin{cfuncdesc}{PyObject*}{PyObject_Call}{PyObject *callable_object,
228 PyObject *args,
229 PyObject *kw}
230 Call a callable Python object \var{callable_object}, with arguments
231 given by the tuple \var{args}, and named arguments given by the
232 dictionary \var{kw}. If no named arguments are needed, \var{kw} may
233 be \NULL{}. \var{args} must not be \NULL{}, use an empty tuple if
234 no arguments are needed. Returns the result of the call on success,
235 or \NULL{} on failure. This is the equivalent of the Python
236 expression \samp{apply(\var{callable_object}, \var{args}, \var{kw})}
237 or \samp{\var{callable_object}(*\var{args}, **\var{kw})}.
238 \bifuncindex{apply}
Fred Drakef5368272003-01-25 07:48:13 +0000239 \versionadded{2.2}
Fred Drake0e0b6182002-04-15 20:51:19 +0000240\end{cfuncdesc}
241
242
Fred Drake3adf79e2001-10-12 19:01:43 +0000243\begin{cfuncdesc}{PyObject*}{PyObject_CallObject}{PyObject *callable_object,
244 PyObject *args}
245 Call a callable Python object \var{callable_object}, with arguments
246 given by the tuple \var{args}. If no arguments are needed, then
247 \var{args} may be \NULL. Returns the result of the call on
248 success, or \NULL{} on failure. This is the equivalent of the
249 Python expression \samp{apply(\var{callable_object}, \var{args})} or
250 \samp{\var{callable_object}(*\var{args})}.
251 \bifuncindex{apply}
252\end{cfuncdesc}
253
Fred Drakec44e9ec2001-10-26 16:38:38 +0000254\begin{cfuncdesc}{PyObject*}{PyObject_CallFunction}{PyObject *callable,
255 char *format, \moreargs}
256 Call a callable Python object \var{callable}, with a variable
Fred Drake3adf79e2001-10-12 19:01:43 +0000257 number of C arguments. The C arguments are described using a
258 \cfunction{Py_BuildValue()} style format string. The format may be
259 \NULL, indicating that no arguments are provided. Returns the
260 result of the call on success, or \NULL{} on failure. This is the
Fred Drakec44e9ec2001-10-26 16:38:38 +0000261 equivalent of the Python expression \samp{apply(\var{callable},
262 \var{args})} or \samp{\var{callable}(*\var{args})}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000263 \bifuncindex{apply}
264\end{cfuncdesc}
265
266
267\begin{cfuncdesc}{PyObject*}{PyObject_CallMethod}{PyObject *o,
Fred Drakec44e9ec2001-10-26 16:38:38 +0000268 char *method, char *format,
269 \moreargs}
Fred Drake3adf79e2001-10-12 19:01:43 +0000270 Call the method named \var{m} of object \var{o} with a variable
271 number of C arguments. The C arguments are described by a
272 \cfunction{Py_BuildValue()} format string. The format may be \NULL,
273 indicating that no arguments are provided. Returns the result of the
274 call on success, or \NULL{} on failure. This is the equivalent of
Fred Drakec44e9ec2001-10-26 16:38:38 +0000275 the Python expression \samp{\var{o}.\var{method}(\var{args})}.
276\end{cfuncdesc}
277
278
Fred Drakeb0c079e2001-10-28 02:39:03 +0000279\begin{cfuncdesc}{PyObject*}{PyObject_CallFunctionObjArgs}{PyObject *callable,
280 \moreargs,
281 \code{NULL}}
Fred Drakec44e9ec2001-10-26 16:38:38 +0000282 Call a callable Python object \var{callable}, with a variable
283 number of \ctype{PyObject*} arguments. The arguments are provided
284 as a variable number of parameters followed by \NULL.
285 Returns the result of the call on success, or \NULL{} on failure.
286 \versionadded{2.2}
287\end{cfuncdesc}
288
289
Fred Drakeb0c079e2001-10-28 02:39:03 +0000290\begin{cfuncdesc}{PyObject*}{PyObject_CallMethodObjArgs}{PyObject *o,
291 PyObject *name,
292 \moreargs,
293 \code{NULL}}
Fred Drakec44e9ec2001-10-26 16:38:38 +0000294 Calls a method of the object \var{o}, where the name of the method
295 is given as a Python string object in \var{name}. It is called with
296 a variable number of \ctype{PyObject*} arguments. The arguments are
297 provided as a variable number of parameters followed by \NULL.
298 Returns the result of the call on success, or \NULL{} on failure.
299 \versionadded{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +0000300\end{cfuncdesc}
301
302
303\begin{cfuncdesc}{int}{PyObject_Hash}{PyObject *o}
304 Compute and return the hash value of an object \var{o}. On failure,
305 return \code{-1}. This is the equivalent of the Python expression
306 \samp{hash(\var{o})}.\bifuncindex{hash}
307\end{cfuncdesc}
308
309
310\begin{cfuncdesc}{int}{PyObject_IsTrue}{PyObject *o}
311 Returns \code{1} if the object \var{o} is considered to be true, and
312 \code{0} otherwise. This is equivalent to the Python expression
313 \samp{not not \var{o}}. This function always succeeds.
314\end{cfuncdesc}
315
316
317\begin{cfuncdesc}{PyObject*}{PyObject_Type}{PyObject *o}
318 When \var{o} is non-\NULL, returns a type object corresponding to
319 the object type of object \var{o}. On failure, raises
320 \exception{SystemError} and returns \NULL. This is equivalent to
321 the Python expression \code{type(\var{o})}.
322 \bifuncindex{type}
323\end{cfuncdesc}
324
325\begin{cfuncdesc}{int}{PyObject_TypeCheck}{PyObject *o, PyTypeObject *type}
326 Return true if the object \var{o} is of type \var{type} or a subtype
327 of \var{type}. Both parameters must be non-\NULL.
328 \versionadded{2.2}
329\end{cfuncdesc}
330
331\begin{cfuncdesc}{int}{PyObject_Length}{PyObject *o}
Fred Drake0e0b6182002-04-15 20:51:19 +0000332\cfuncline{int}{PyObject_Size}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000333 Return the length of object \var{o}. If the object \var{o} provides
334 both sequence and mapping protocols, the sequence length is
335 returned. On error, \code{-1} is returned. This is the equivalent
336 to the Python expression \samp{len(\var{o})}.\bifuncindex{len}
337\end{cfuncdesc}
338
339
340\begin{cfuncdesc}{PyObject*}{PyObject_GetItem}{PyObject *o, PyObject *key}
341 Return element of \var{o} corresponding to the object \var{key} or
342 \NULL{} on failure. This is the equivalent of the Python expression
343 \samp{\var{o}[\var{key}]}.
344\end{cfuncdesc}
345
346
347\begin{cfuncdesc}{int}{PyObject_SetItem}{PyObject *o,
348 PyObject *key, PyObject *v}
349 Map the object \var{key} to the value \var{v}. Returns \code{-1} on
350 failure. This is the equivalent of the Python statement
351 \samp{\var{o}[\var{key}] = \var{v}}.
352\end{cfuncdesc}
353
354
355\begin{cfuncdesc}{int}{PyObject_DelItem}{PyObject *o, PyObject *key}
356 Delete the mapping for \var{key} from \var{o}. Returns \code{-1} on
357 failure. This is the equivalent of the Python statement \samp{del
358 \var{o}[\var{key}]}.
359\end{cfuncdesc}
360
361\begin{cfuncdesc}{int}{PyObject_AsFileDescriptor}{PyObject *o}
362 Derives a file-descriptor from a Python object. If the object is an
363 integer or long integer, its value is returned. If not, the
364 object's \method{fileno()} method is called if it exists; the method
365 must return an integer or long integer, which is returned as the
366 file descriptor value. Returns \code{-1} on failure.
367\end{cfuncdesc}
368
369\begin{cfuncdesc}{PyObject*}{PyObject_Dir}{PyObject *o}
370 This is equivalent to the Python expression \samp{dir(\var{o})},
371 returning a (possibly empty) list of strings appropriate for the
372 object argument, or \NULL{} if there was an error. If the argument
373 is \NULL, this is like the Python \samp{dir()}, returning the names
374 of the current locals; in this case, if no execution frame is active
375 then \NULL{} is returned but \cfunction{PyErr_Occurred()} will
376 return false.
377\end{cfuncdesc}
378
Fred Drake314bae52002-03-11 18:46:29 +0000379\begin{cfuncdesc}{PyObject*}{PyObject_GetIter}{PyObject *o}
380 This is equivalent to the Python expression \samp{iter(\var{o})}.
381 It returns a new iterator for the object argument, or the object
382 itself if the object is already an iterator. Raises
383 \exception{TypeError} and returns \NULL{} if the object cannot be
384 iterated.
385\end{cfuncdesc}
386
Fred Drake3adf79e2001-10-12 19:01:43 +0000387
388\section{Number Protocol \label{number}}
389
390\begin{cfuncdesc}{int}{PyNumber_Check}{PyObject *o}
391 Returns \code{1} if the object \var{o} provides numeric protocols,
392 and false otherwise. This function always succeeds.
393\end{cfuncdesc}
394
395
396\begin{cfuncdesc}{PyObject*}{PyNumber_Add}{PyObject *o1, PyObject *o2}
397 Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
398 failure. This is the equivalent of the Python expression
399 \samp{\var{o1} + \var{o2}}.
400\end{cfuncdesc}
401
402
403\begin{cfuncdesc}{PyObject*}{PyNumber_Subtract}{PyObject *o1, PyObject *o2}
404 Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
405 on failure. This is the equivalent of the Python expression
406 \samp{\var{o1} - \var{o2}}.
407\end{cfuncdesc}
408
409
410\begin{cfuncdesc}{PyObject*}{PyNumber_Multiply}{PyObject *o1, PyObject *o2}
411 Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{}
412 on failure. This is the equivalent of the Python expression
413 \samp{\var{o1} * \var{o2}}.
414\end{cfuncdesc}
415
416
417\begin{cfuncdesc}{PyObject*}{PyNumber_Divide}{PyObject *o1, PyObject *o2}
418 Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
419 failure. This is the equivalent of the Python expression
420 \samp{\var{o1} / \var{o2}}.
421\end{cfuncdesc}
422
423
424\begin{cfuncdesc}{PyObject*}{PyNumber_FloorDivide}{PyObject *o1, PyObject *o2}
425 Return the floor of \var{o1} divided by \var{o2}, or \NULL{} on
426 failure. This is equivalent to the ``classic'' division of
427 integers.
428 \versionadded{2.2}
429\end{cfuncdesc}
430
431
432\begin{cfuncdesc}{PyObject*}{PyNumber_TrueDivide}{PyObject *o1, PyObject *o2}
433 Return a reasonable approximation for the mathematical value of
434 \var{o1} divided by \var{o2}, or \NULL{} on failure. The return
435 value is ``approximate'' because binary floating point numbers are
436 approximate; it is not possible to represent all real numbers in
437 base two. This function can return a floating point value when
438 passed two integers.
439 \versionadded{2.2}
440\end{cfuncdesc}
441
442
443\begin{cfuncdesc}{PyObject*}{PyNumber_Remainder}{PyObject *o1, PyObject *o2}
444 Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{}
445 on failure. This is the equivalent of the Python expression
446 \samp{\var{o1} \%\ \var{o2}}.
447\end{cfuncdesc}
448
449
450\begin{cfuncdesc}{PyObject*}{PyNumber_Divmod}{PyObject *o1, PyObject *o2}
451 See the built-in function \function{divmod()}\bifuncindex{divmod}.
452 Returns \NULL{} on failure. This is the equivalent of the Python
453 expression \samp{divmod(\var{o1}, \var{o2})}.
454\end{cfuncdesc}
455
456
457\begin{cfuncdesc}{PyObject*}{PyNumber_Power}{PyObject *o1,
458 PyObject *o2, PyObject *o3}
459 See the built-in function \function{pow()}\bifuncindex{pow}.
460 Returns \NULL{} on failure. This is the equivalent of the Python
461 expression \samp{pow(\var{o1}, \var{o2}, \var{o3})}, where \var{o3}
462 is optional. If \var{o3} is to be ignored, pass \cdata{Py_None} in
463 its place (passing \NULL{} for \var{o3} would cause an illegal
464 memory access).
465\end{cfuncdesc}
466
467
468\begin{cfuncdesc}{PyObject*}{PyNumber_Negative}{PyObject *o}
469 Returns the negation of \var{o} on success, or \NULL{} on failure.
470 This is the equivalent of the Python expression \samp{-\var{o}}.
471\end{cfuncdesc}
472
473
474\begin{cfuncdesc}{PyObject*}{PyNumber_Positive}{PyObject *o}
475 Returns \var{o} on success, or \NULL{} on failure. This is the
476 equivalent of the Python expression \samp{+\var{o}}.
477\end{cfuncdesc}
478
479
480\begin{cfuncdesc}{PyObject*}{PyNumber_Absolute}{PyObject *o}
481 Returns the absolute value of \var{o}, or \NULL{} on failure. This
482 is the equivalent of the Python expression \samp{abs(\var{o})}.
483 \bifuncindex{abs}
484\end{cfuncdesc}
485
486
487\begin{cfuncdesc}{PyObject*}{PyNumber_Invert}{PyObject *o}
488 Returns the bitwise negation of \var{o} on success, or \NULL{} on
489 failure. This is the equivalent of the Python expression
490 \samp{\~\var{o}}.
491\end{cfuncdesc}
492
493
494\begin{cfuncdesc}{PyObject*}{PyNumber_Lshift}{PyObject *o1, PyObject *o2}
495 Returns the result of left shifting \var{o1} by \var{o2} on success,
496 or \NULL{} on failure. This is the equivalent of the Python
497 expression \samp{\var{o1} <\code{<} \var{o2}}.
498\end{cfuncdesc}
499
500
501\begin{cfuncdesc}{PyObject*}{PyNumber_Rshift}{PyObject *o1, PyObject *o2}
502 Returns the result of right shifting \var{o1} by \var{o2} on
503 success, or \NULL{} on failure. This is the equivalent of the
504 Python expression \samp{\var{o1} >\code{>} \var{o2}}.
505\end{cfuncdesc}
506
507
508\begin{cfuncdesc}{PyObject*}{PyNumber_And}{PyObject *o1, PyObject *o2}
509 Returns the ``bitwise and'' of \var{o2} and \var{o2} on success and
510 \NULL{} on failure. This is the equivalent of the Python expression
511 \samp{\var{o1} \&\ \var{o2}}.
512\end{cfuncdesc}
513
514
515\begin{cfuncdesc}{PyObject*}{PyNumber_Xor}{PyObject *o1, PyObject *o2}
516 Returns the ``bitwise exclusive or'' of \var{o1} by \var{o2} on
517 success, or \NULL{} on failure. This is the equivalent of the
518 Python expression \samp{\var{o1} \textasciicircum{} \var{o2}}.
519\end{cfuncdesc}
520
521\begin{cfuncdesc}{PyObject*}{PyNumber_Or}{PyObject *o1, PyObject *o2}
522 Returns the ``bitwise or'' of \var{o1} and \var{o2} on success, or
523 \NULL{} on failure. This is the equivalent of the Python expression
524 \samp{\var{o1} | \var{o2}}.
525\end{cfuncdesc}
526
527
528\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceAdd}{PyObject *o1, PyObject *o2}
529 Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
530 failure. The operation is done \emph{in-place} when \var{o1}
531 supports it. This is the equivalent of the Python statement
532 \samp{\var{o1} += \var{o2}}.
533\end{cfuncdesc}
534
535
536\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceSubtract}{PyObject *o1,
537 PyObject *o2}
538 Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
539 on failure. The operation is done \emph{in-place} when \var{o1}
540 supports it. This is the equivalent of the Python statement
541 \samp{\var{o1} -= \var{o2}}.
542\end{cfuncdesc}
543
544
545\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceMultiply}{PyObject *o1,
546 PyObject *o2}
547 Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{}
548 on failure. The operation is done \emph{in-place} when \var{o1}
549 supports it. This is the equivalent of the Python statement
550 \samp{\var{o1} *= \var{o2}}.
551\end{cfuncdesc}
552
553
554\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceDivide}{PyObject *o1,
555 PyObject *o2}
556 Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
557 failure. The operation is done \emph{in-place} when \var{o1}
558 supports it. This is the equivalent of the Python statement
559 \samp{\var{o1} /= \var{o2}}.
560\end{cfuncdesc}
561
562
563\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceFloorDivide}{PyObject *o1,
564 PyObject *o2}
565 Returns the mathematical of dividing \var{o1} by \var{o2}, or
566 \NULL{} on failure. The operation is done \emph{in-place} when
567 \var{o1} supports it. This is the equivalent of the Python
568 statement \samp{\var{o1} //= \var{o2}}.
569 \versionadded{2.2}
570\end{cfuncdesc}
571
572
573\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceTrueDivide}{PyObject *o1,
574 PyObject *o2}
575 Return a reasonable approximation for the mathematical value of
576 \var{o1} divided by \var{o2}, or \NULL{} on failure. The return
577 value is ``approximate'' because binary floating point numbers are
578 approximate; it is not possible to represent all real numbers in
579 base two. This function can return a floating point value when
580 passed two integers. The operation is done \emph{in-place} when
581 \var{o1} supports it.
582 \versionadded{2.2}
583\end{cfuncdesc}
584
585
586\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceRemainder}{PyObject *o1,
587 PyObject *o2}
588 Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{}
589 on failure. The operation is done \emph{in-place} when \var{o1}
590 supports it. This is the equivalent of the Python statement
591 \samp{\var{o1} \%= \var{o2}}.
592\end{cfuncdesc}
593
594
595\begin{cfuncdesc}{PyObject*}{PyNumber_InPlacePower}{PyObject *o1,
596 PyObject *o2, PyObject *o3}
597 See the built-in function \function{pow()}.\bifuncindex{pow}
598 Returns \NULL{} on failure. The operation is done \emph{in-place}
599 when \var{o1} supports it. This is the equivalent of the Python
600 statement \samp{\var{o1} **= \var{o2}} when o3 is \cdata{Py_None},
601 or an in-place variant of \samp{pow(\var{o1}, \var{o2}, \var{o3})}
602 otherwise. If \var{o3} is to be ignored, pass \cdata{Py_None} in its
603 place (passing \NULL{} for \var{o3} would cause an illegal memory
604 access).
605\end{cfuncdesc}
606
607\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceLshift}{PyObject *o1,
608 PyObject *o2}
609 Returns the result of left shifting \var{o1} by \var{o2} on success,
610 or \NULL{} on failure. The operation is done \emph{in-place} when
611 \var{o1} supports it. This is the equivalent of the Python
612 statement \samp{\var{o1} <\code{<=} \var{o2}}.
613\end{cfuncdesc}
614
615
616\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceRshift}{PyObject *o1,
617 PyObject *o2}
618 Returns the result of right shifting \var{o1} by \var{o2} on
619 success, or \NULL{} on failure. The operation is done
620 \emph{in-place} when \var{o1} supports it. This is the equivalent
621 of the Python statement \samp{\var{o1} >\code{>=} \var{o2}}.
622\end{cfuncdesc}
623
624
625\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceAnd}{PyObject *o1, PyObject *o2}
626 Returns the ``bitwise and'' of \var{o1} and \var{o2} on success and
627 \NULL{} on failure. The operation is done \emph{in-place} when
628 \var{o1} supports it. This is the equivalent of the Python
629 statement \samp{\var{o1} \&= \var{o2}}.
630\end{cfuncdesc}
631
632
633\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceXor}{PyObject *o1, PyObject *o2}
634 Returns the ``bitwise exclusive or'' of \var{o1} by \var{o2} on
635 success, or \NULL{} on failure. The operation is done
636 \emph{in-place} when \var{o1} supports it. This is the equivalent
637 of the Python statement \samp{\var{o1} \textasciicircum= \var{o2}}.
638\end{cfuncdesc}
639
640\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceOr}{PyObject *o1, PyObject *o2}
641 Returns the ``bitwise or'' of \var{o1} and \var{o2} on success, or
642 \NULL{} on failure. The operation is done \emph{in-place} when
643 \var{o1} supports it. This is the equivalent of the Python
644 statement \samp{\var{o1} |= \var{o2}}.
645\end{cfuncdesc}
646
647\begin{cfuncdesc}{int}{PyNumber_Coerce}{PyObject **p1, PyObject **p2}
648 This function takes the addresses of two variables of type
649 \ctype{PyObject*}. If the objects pointed to by \code{*\var{p1}}
650 and \code{*\var{p2}} have the same type, increment their reference
651 count and return \code{0} (success). If the objects can be converted
652 to a common numeric type, replace \code{*p1} and \code{*p2} by their
653 converted value (with 'new' reference counts), and return \code{0}.
654 If no conversion is possible, or if some other error occurs, return
655 \code{-1} (failure) and don't increment the reference counts. The
656 call \code{PyNumber_Coerce(\&o1, \&o2)} is equivalent to the Python
657 statement \samp{\var{o1}, \var{o2} = coerce(\var{o1}, \var{o2})}.
658 \bifuncindex{coerce}
659\end{cfuncdesc}
660
661\begin{cfuncdesc}{PyObject*}{PyNumber_Int}{PyObject *o}
662 Returns the \var{o} converted to an integer object on success, or
Walter Dörwaldf1715402002-11-19 20:49:15 +0000663 \NULL{} on failure. If the argument is outside the integer range
664 a long object will be returned instead. This is the equivalent
665 of the Python expression \samp{int(\var{o})}.\bifuncindex{int}
Fred Drake3adf79e2001-10-12 19:01:43 +0000666\end{cfuncdesc}
667
668\begin{cfuncdesc}{PyObject*}{PyNumber_Long}{PyObject *o}
669 Returns the \var{o} converted to a long integer object on success,
670 or \NULL{} on failure. This is the equivalent of the Python
671 expression \samp{long(\var{o})}.\bifuncindex{long}
672\end{cfuncdesc}
673
674\begin{cfuncdesc}{PyObject*}{PyNumber_Float}{PyObject *o}
675 Returns the \var{o} converted to a float object on success, or
676 \NULL{} on failure. This is the equivalent of the Python expression
677 \samp{float(\var{o})}.\bifuncindex{float}
678\end{cfuncdesc}
679
680
681\section{Sequence Protocol \label{sequence}}
682
683\begin{cfuncdesc}{int}{PySequence_Check}{PyObject *o}
684 Return \code{1} if the object provides sequence protocol, and
685 \code{0} otherwise. This function always succeeds.
686\end{cfuncdesc}
687
688\begin{cfuncdesc}{int}{PySequence_Size}{PyObject *o}
689 Returns the number of objects in sequence \var{o} on success, and
690 \code{-1} on failure. For objects that do not provide sequence
691 protocol, this is equivalent to the Python expression
692 \samp{len(\var{o})}.\bifuncindex{len}
693\end{cfuncdesc}
694
695\begin{cfuncdesc}{int}{PySequence_Length}{PyObject *o}
696 Alternate name for \cfunction{PySequence_Size()}.
697\end{cfuncdesc}
698
699\begin{cfuncdesc}{PyObject*}{PySequence_Concat}{PyObject *o1, PyObject *o2}
700 Return the concatenation of \var{o1} and \var{o2} on success, and
701 \NULL{} on failure. This is the equivalent of the Python
702 expression \samp{\var{o1} + \var{o2}}.
703\end{cfuncdesc}
704
705
706\begin{cfuncdesc}{PyObject*}{PySequence_Repeat}{PyObject *o, int count}
707 Return the result of repeating sequence object \var{o} \var{count}
708 times, or \NULL{} on failure. This is the equivalent of the Python
709 expression \samp{\var{o} * \var{count}}.
710\end{cfuncdesc}
711
712\begin{cfuncdesc}{PyObject*}{PySequence_InPlaceConcat}{PyObject *o1,
713 PyObject *o2}
714 Return the concatenation of \var{o1} and \var{o2} on success, and
715 \NULL{} on failure. The operation is done \emph{in-place} when
716 \var{o1} supports it. This is the equivalent of the Python
717 expression \samp{\var{o1} += \var{o2}}.
718\end{cfuncdesc}
719
720
721\begin{cfuncdesc}{PyObject*}{PySequence_InPlaceRepeat}{PyObject *o, int count}
722 Return the result of repeating sequence object \var{o} \var{count}
723 times, or \NULL{} on failure. The operation is done \emph{in-place}
724 when \var{o} supports it. This is the equivalent of the Python
725 expression \samp{\var{o} *= \var{count}}.
726\end{cfuncdesc}
727
728
729\begin{cfuncdesc}{PyObject*}{PySequence_GetItem}{PyObject *o, int i}
730 Return the \var{i}th element of \var{o}, or \NULL{} on failure.
731 This is the equivalent of the Python expression
732 \samp{\var{o}[\var{i}]}.
733\end{cfuncdesc}
734
735
736\begin{cfuncdesc}{PyObject*}{PySequence_GetSlice}{PyObject *o, int i1, int i2}
737 Return the slice of sequence object \var{o} between \var{i1} and
738 \var{i2}, or \NULL{} on failure. This is the equivalent of the
739 Python expression \samp{\var{o}[\var{i1}:\var{i2}]}.
740\end{cfuncdesc}
741
742
743\begin{cfuncdesc}{int}{PySequence_SetItem}{PyObject *o, int i, PyObject *v}
744 Assign object \var{v} to the \var{i}th element of \var{o}. Returns
745 \code{-1} on failure. This is the equivalent of the Python
746 statement \samp{\var{o}[\var{i}] = \var{v}}.
747\end{cfuncdesc}
748
749\begin{cfuncdesc}{int}{PySequence_DelItem}{PyObject *o, int i}
750 Delete the \var{i}th element of object \var{o}. Returns \code{-1}
751 on failure. This is the equivalent of the Python statement
752 \samp{del \var{o}[\var{i}]}.
753\end{cfuncdesc}
754
755\begin{cfuncdesc}{int}{PySequence_SetSlice}{PyObject *o, int i1,
756 int i2, PyObject *v}
757 Assign the sequence object \var{v} to the slice in sequence object
758 \var{o} from \var{i1} to \var{i2}. This is the equivalent of the
759 Python statement \samp{\var{o}[\var{i1}:\var{i2}] = \var{v}}.
760\end{cfuncdesc}
761
762\begin{cfuncdesc}{int}{PySequence_DelSlice}{PyObject *o, int i1, int i2}
763 Delete the slice in sequence object \var{o} from \var{i1} to
764 \var{i2}. Returns \code{-1} on failure. This is the equivalent of
765 the Python statement \samp{del \var{o}[\var{i1}:\var{i2}]}.
766\end{cfuncdesc}
767
768\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
769 Returns the \var{o} as a tuple on success, and \NULL{} on failure.
770 This is equivalent to the Python expression \samp{tuple(\var{o})}.
771 \bifuncindex{tuple}
772\end{cfuncdesc}
773
774\begin{cfuncdesc}{int}{PySequence_Count}{PyObject *o, PyObject *value}
775 Return the number of occurrences of \var{value} in \var{o}, that is,
776 return the number of keys for which \code{\var{o}[\var{key}] ==
777 \var{value}}. On failure, return \code{-1}. This is equivalent to
778 the Python expression \samp{\var{o}.count(\var{value})}.
779\end{cfuncdesc}
780
781\begin{cfuncdesc}{int}{PySequence_Contains}{PyObject *o, PyObject *value}
782 Determine if \var{o} contains \var{value}. If an item in \var{o} is
783 equal to \var{value}, return \code{1}, otherwise return \code{0}.
784 On error, return \code{-1}. This is equivalent to the Python
785 expression \samp{\var{value} in \var{o}}.
786\end{cfuncdesc}
787
788\begin{cfuncdesc}{int}{PySequence_Index}{PyObject *o, PyObject *value}
789 Return the first index \var{i} for which \code{\var{o}[\var{i}] ==
790 \var{value}}. On error, return \code{-1}. This is equivalent to
791 the Python expression \samp{\var{o}.index(\var{value})}.
792\end{cfuncdesc}
793
794\begin{cfuncdesc}{PyObject*}{PySequence_List}{PyObject *o}
795 Return a list object with the same contents as the arbitrary
796 sequence \var{o}. The returned list is guaranteed to be new.
797\end{cfuncdesc}
798
799\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
800 Return a tuple object with the same contents as the arbitrary
801 sequence \var{o}. If \var{o} is a tuple, a new reference will be
802 returned, otherwise a tuple will be constructed with the appropriate
803 contents.
804\end{cfuncdesc}
805
806\begin{cfuncdesc}{PyObject*}{PySequence_Fast}{PyObject *o, const char *m}
807 Returns the sequence \var{o} as a tuple, unless it is already a
808 tuple or list, in which case \var{o} is returned. Use
809 \cfunction{PySequence_Fast_GET_ITEM()} to access the members of the
810 result. Returns \NULL{} on failure. If the object is not a
811 sequence, raises \exception{TypeError} with \var{m} as the message
812 text.
813\end{cfuncdesc}
814
815\begin{cfuncdesc}{PyObject*}{PySequence_Fast_GET_ITEM}{PyObject *o, int i}
816 Return the \var{i}th element of \var{o}, assuming that \var{o} was
Fred Drakec37b65e2001-11-28 07:26:15 +0000817 returned by \cfunction{PySequence_Fast()}, \var{o} is not \NULL,
Tim Peters1fc240e2001-10-26 05:06:50 +0000818 and that \var{i} is within bounds.
819\end{cfuncdesc}
820
Martin v. Löwis01f94bd2002-05-08 08:44:21 +0000821\begin{cfuncdesc}{PyObject*}{PySequence_ITEM}{PyObject *o, int i}
822 Return the \var{i}th element of \var{o} or \NULL on failure.
823 Macro form of \cfunction{PySequence_GetItem()} but without checking
824 that \cfunction{PySequence_Check(\var{o})} is true and without
Fred Drake86228e42002-05-23 16:02:28 +0000825 adjustment for negative indices.
826 \versionadded{2.3}
Martin v. Löwis01f94bd2002-05-08 08:44:21 +0000827\end{cfuncdesc}
828
Tim Peters1fc240e2001-10-26 05:06:50 +0000829\begin{cfuncdesc}{int}{PySequence_Fast_GET_SIZE}{PyObject *o}
830 Returns the length of \var{o}, assuming that \var{o} was
831 returned by \cfunction{PySequence_Fast()} and that \var{o} is
Fred Drakec37b65e2001-11-28 07:26:15 +0000832 not \NULL. The size can also be gotten by calling
Tim Peters1fc240e2001-10-26 05:06:50 +0000833 \cfunction{PySequence_Size()} on \var{o}, but
834 \cfunction{PySequence_Fast_GET_SIZE()} is faster because it can
835 assume \var{o} is a list or tuple.
Fred Drake3adf79e2001-10-12 19:01:43 +0000836\end{cfuncdesc}
837
838
839\section{Mapping Protocol \label{mapping}}
840
841\begin{cfuncdesc}{int}{PyMapping_Check}{PyObject *o}
842 Return \code{1} if the object provides mapping protocol, and
843 \code{0} otherwise. This function always succeeds.
844\end{cfuncdesc}
845
846
847\begin{cfuncdesc}{int}{PyMapping_Length}{PyObject *o}
848 Returns the number of keys in object \var{o} on success, and
849 \code{-1} on failure. For objects that do not provide mapping
850 protocol, this is equivalent to the Python expression
851 \samp{len(\var{o})}.\bifuncindex{len}
852\end{cfuncdesc}
853
854
855\begin{cfuncdesc}{int}{PyMapping_DelItemString}{PyObject *o, char *key}
856 Remove the mapping for object \var{key} from the object \var{o}.
857 Return \code{-1} on failure. This is equivalent to the Python
858 statement \samp{del \var{o}[\var{key}]}.
859\end{cfuncdesc}
860
861
862\begin{cfuncdesc}{int}{PyMapping_DelItem}{PyObject *o, PyObject *key}
863 Remove the mapping for object \var{key} from the object \var{o}.
864 Return \code{-1} on failure. This is equivalent to the Python
865 statement \samp{del \var{o}[\var{key}]}.
866\end{cfuncdesc}
867
868
869\begin{cfuncdesc}{int}{PyMapping_HasKeyString}{PyObject *o, char *key}
870 On success, return \code{1} if the mapping object has the key
871 \var{key} and \code{0} otherwise. This is equivalent to the Python
872 expression \samp{\var{o}.has_key(\var{key})}. This function always
873 succeeds.
874\end{cfuncdesc}
875
876
877\begin{cfuncdesc}{int}{PyMapping_HasKey}{PyObject *o, PyObject *key}
878 Return \code{1} if the mapping object has the key \var{key} and
879 \code{0} otherwise. This is equivalent to the Python expression
880 \samp{\var{o}.has_key(\var{key})}. This function always succeeds.
881\end{cfuncdesc}
882
883
884\begin{cfuncdesc}{PyObject*}{PyMapping_Keys}{PyObject *o}
885 On success, return a list of the keys in object \var{o}. On
886 failure, return \NULL. This is equivalent to the Python expression
887 \samp{\var{o}.keys()}.
888\end{cfuncdesc}
889
890
891\begin{cfuncdesc}{PyObject*}{PyMapping_Values}{PyObject *o}
892 On success, return a list of the values in object \var{o}. On
893 failure, return \NULL. This is equivalent to the Python expression
894 \samp{\var{o}.values()}.
895\end{cfuncdesc}
896
897
898\begin{cfuncdesc}{PyObject*}{PyMapping_Items}{PyObject *o}
899 On success, return a list of the items in object \var{o}, where each
900 item is a tuple containing a key-value pair. On failure, return
901 \NULL. This is equivalent to the Python expression
902 \samp{\var{o}.items()}.
903\end{cfuncdesc}
904
905
906\begin{cfuncdesc}{PyObject*}{PyMapping_GetItemString}{PyObject *o, char *key}
907 Return element of \var{o} corresponding to the object \var{key} or
908 \NULL{} on failure. This is the equivalent of the Python expression
909 \samp{\var{o}[\var{key}]}.
910\end{cfuncdesc}
911
912\begin{cfuncdesc}{int}{PyMapping_SetItemString}{PyObject *o, char *key,
913 PyObject *v}
914 Map the object \var{key} to the value \var{v} in object \var{o}.
915 Returns \code{-1} on failure. This is the equivalent of the Python
916 statement \samp{\var{o}[\var{key}] = \var{v}}.
917\end{cfuncdesc}
918
919
920\section{Iterator Protocol \label{iterator}}
921
922\versionadded{2.2}
923
924There are only a couple of functions specifically for working with
925iterators.
926
927\begin{cfuncdesc}{int}{PyIter_Check}{PyObject *o}
928 Return true if the object \var{o} supports the iterator protocol.
929\end{cfuncdesc}
930
931\begin{cfuncdesc}{PyObject*}{PyIter_Next}{PyObject *o}
932 Return the next value from the iteration \var{o}. If the object is
933 an iterator, this retrieves the next value from the iteration, and
934 returns \NULL{} with no exception set if there are no remaining
935 items. If the object is not an iterator, \exception{TypeError} is
936 raised, or if there is an error in retrieving the item, returns
937 \NULL{} and passes along the exception.
938\end{cfuncdesc}
939
940To write a loop which iterates over an iterator, the C code should
941look something like this:
942
943\begin{verbatim}
Fred Drake314bae52002-03-11 18:46:29 +0000944PyObject *iterator = PyObject_GetIter(obj);
Fred Drake3adf79e2001-10-12 19:01:43 +0000945PyObject *item;
946
Fred Drake314bae52002-03-11 18:46:29 +0000947if (iterator == NULL) {
948 /* propagate error */
949}
950
951while (item = PyIter_Next(iterator)) {
Fred Drake3adf79e2001-10-12 19:01:43 +0000952 /* do something with item */
Fred Drake8b8fe282001-12-26 16:53:48 +0000953 ...
954 /* release reference when done */
955 Py_DECREF(item);
Fred Drake3adf79e2001-10-12 19:01:43 +0000956}
Fred Drake314bae52002-03-11 18:46:29 +0000957
958Py_DECREF(iterator);
959
Fred Drake3adf79e2001-10-12 19:01:43 +0000960if (PyErr_Occurred()) {
Fred Drake314bae52002-03-11 18:46:29 +0000961 /* propagate error */
Fred Drake3adf79e2001-10-12 19:01:43 +0000962}
963else {
964 /* continue doing useful work */
965}
Fred Drake8b8fe282001-12-26 16:53:48 +0000966\end{verbatim}
967
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000968
Fred Drake94ead572001-11-09 23:34:26 +0000969\section{Buffer Protocol \label{abstract-buffer}}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000970
971\begin{cfuncdesc}{int}{PyObject_AsCharBuffer}{PyObject *obj,
Fred Drake94ead572001-11-09 23:34:26 +0000972 const char **buffer,
973 int *buffer_len}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000974 Returns a pointer to a read-only memory location useable as character-
975 based input. The \var{obj} argument must support the single-segment
Fred Drake243ea712002-04-04 04:10:36 +0000976 character buffer interface. On success, returns \code{0}, sets
Thomas Hellerbfeeeee2001-11-12 07:46:31 +0000977 \var{buffer} to the memory location and \var{buffer_len} to the buffer
Fred Drake243ea712002-04-04 04:10:36 +0000978 length. Returns \code{-1} and sets a \exception{TypeError} on error.
Fred Drake94ead572001-11-09 23:34:26 +0000979 \versionadded{1.6}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000980\end{cfuncdesc}
981
982\begin{cfuncdesc}{int}{PyObject_AsReadBuffer}{PyObject *obj,
Fred Drake94ead572001-11-09 23:34:26 +0000983 const char **buffer,
984 int *buffer_len}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000985 Returns a pointer to a read-only memory location containing
986 arbitrary data. The \var{obj} argument must support the
987 single-segment readable buffer interface. On success, returns
Fred Drake243ea712002-04-04 04:10:36 +0000988 \code{0}, sets \var{buffer} to the memory location and \var{buffer_len}
989 to the buffer length. Returns \code{-1} and sets a
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000990 \exception{TypeError} on error.
Fred Drake94ead572001-11-09 23:34:26 +0000991 \versionadded{1.6}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000992\end{cfuncdesc}
993
994\begin{cfuncdesc}{int}{PyObject_CheckReadBuffer}{PyObject *o}
995 Returns \code{1} if \var{o} supports the single-segment readable
996 buffer interface. Otherwise returns \code{0}.
Fred Drake94ead572001-11-09 23:34:26 +0000997 \versionadded{2.2}
Fred Drake8b8fe282001-12-26 16:53:48 +0000998\end{cfuncdesc}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000999
1000\begin{cfuncdesc}{int}{PyObject_AsWriteBuffer}{PyObject *obj,
Raymond Hettinger51306902002-09-08 04:39:28 +00001001 char **buffer,
Fred Drake94ead572001-11-09 23:34:26 +00001002 int *buffer_len}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001003 Returns a pointer to a writeable memory location. The \var{obj}
1004 argument must support the single-segment, character buffer
Fred Drake243ea712002-04-04 04:10:36 +00001005 interface. On success, returns \code{0}, sets \var{buffer} to the
Thomas Hellerbfeeeee2001-11-12 07:46:31 +00001006 memory location and \var{buffer_len} to the buffer length. Returns
Fred Drake243ea712002-04-04 04:10:36 +00001007 \code{-1} and sets a \exception{TypeError} on error.
Fred Drake94ead572001-11-09 23:34:26 +00001008 \versionadded{1.6}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001009\end{cfuncdesc}