blob: 1d87c0562b96eed06c29cd87c4f326c77e117ae3 [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
Fred Drake12dd7b12003-04-09 18:15:57 +0000321 the Python expression \code{type(\var{o})}.\bifuncindex{type}
Guido van Rossum6db77182003-04-09 18:02:23 +0000322 This function increments the reference count of the return value.
323 There's really no reason to use this function instead of the
324 common expression \code{\var{o}->ob_type}, which returns a pointer
Fred Drake12dd7b12003-04-09 18:15:57 +0000325 of type \ctype{PyTypeObject*}, except when the incremented reference
Guido van Rossum6db77182003-04-09 18:02:23 +0000326 count is needed.
Fred Drake3adf79e2001-10-12 19:01:43 +0000327\end{cfuncdesc}
328
329\begin{cfuncdesc}{int}{PyObject_TypeCheck}{PyObject *o, PyTypeObject *type}
330 Return true if the object \var{o} is of type \var{type} or a subtype
331 of \var{type}. Both parameters must be non-\NULL.
332 \versionadded{2.2}
333\end{cfuncdesc}
334
335\begin{cfuncdesc}{int}{PyObject_Length}{PyObject *o}
Fred Drake0e0b6182002-04-15 20:51:19 +0000336\cfuncline{int}{PyObject_Size}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000337 Return the length of object \var{o}. If the object \var{o} provides
338 both sequence and mapping protocols, the sequence length is
339 returned. On error, \code{-1} is returned. This is the equivalent
340 to the Python expression \samp{len(\var{o})}.\bifuncindex{len}
341\end{cfuncdesc}
342
343
344\begin{cfuncdesc}{PyObject*}{PyObject_GetItem}{PyObject *o, PyObject *key}
345 Return element of \var{o} corresponding to the object \var{key} or
346 \NULL{} on failure. This is the equivalent of the Python expression
347 \samp{\var{o}[\var{key}]}.
348\end{cfuncdesc}
349
350
351\begin{cfuncdesc}{int}{PyObject_SetItem}{PyObject *o,
352 PyObject *key, PyObject *v}
353 Map the object \var{key} to the value \var{v}. Returns \code{-1} on
354 failure. This is the equivalent of the Python statement
355 \samp{\var{o}[\var{key}] = \var{v}}.
356\end{cfuncdesc}
357
358
359\begin{cfuncdesc}{int}{PyObject_DelItem}{PyObject *o, PyObject *key}
360 Delete the mapping for \var{key} from \var{o}. Returns \code{-1} on
361 failure. This is the equivalent of the Python statement \samp{del
362 \var{o}[\var{key}]}.
363\end{cfuncdesc}
364
365\begin{cfuncdesc}{int}{PyObject_AsFileDescriptor}{PyObject *o}
366 Derives a file-descriptor from a Python object. If the object is an
367 integer or long integer, its value is returned. If not, the
368 object's \method{fileno()} method is called if it exists; the method
369 must return an integer or long integer, which is returned as the
370 file descriptor value. Returns \code{-1} on failure.
371\end{cfuncdesc}
372
373\begin{cfuncdesc}{PyObject*}{PyObject_Dir}{PyObject *o}
374 This is equivalent to the Python expression \samp{dir(\var{o})},
375 returning a (possibly empty) list of strings appropriate for the
376 object argument, or \NULL{} if there was an error. If the argument
377 is \NULL, this is like the Python \samp{dir()}, returning the names
378 of the current locals; in this case, if no execution frame is active
379 then \NULL{} is returned but \cfunction{PyErr_Occurred()} will
380 return false.
381\end{cfuncdesc}
382
Fred Drake314bae52002-03-11 18:46:29 +0000383\begin{cfuncdesc}{PyObject*}{PyObject_GetIter}{PyObject *o}
384 This is equivalent to the Python expression \samp{iter(\var{o})}.
385 It returns a new iterator for the object argument, or the object
386 itself if the object is already an iterator. Raises
387 \exception{TypeError} and returns \NULL{} if the object cannot be
388 iterated.
389\end{cfuncdesc}
390
Fred Drake3adf79e2001-10-12 19:01:43 +0000391
392\section{Number Protocol \label{number}}
393
394\begin{cfuncdesc}{int}{PyNumber_Check}{PyObject *o}
395 Returns \code{1} if the object \var{o} provides numeric protocols,
396 and false otherwise. This function always succeeds.
397\end{cfuncdesc}
398
399
400\begin{cfuncdesc}{PyObject*}{PyNumber_Add}{PyObject *o1, PyObject *o2}
401 Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
402 failure. This is the equivalent of the Python expression
403 \samp{\var{o1} + \var{o2}}.
404\end{cfuncdesc}
405
406
407\begin{cfuncdesc}{PyObject*}{PyNumber_Subtract}{PyObject *o1, PyObject *o2}
408 Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
409 on failure. This is the equivalent of the Python expression
410 \samp{\var{o1} - \var{o2}}.
411\end{cfuncdesc}
412
413
414\begin{cfuncdesc}{PyObject*}{PyNumber_Multiply}{PyObject *o1, PyObject *o2}
415 Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{}
416 on failure. This is the equivalent of the Python expression
417 \samp{\var{o1} * \var{o2}}.
418\end{cfuncdesc}
419
420
421\begin{cfuncdesc}{PyObject*}{PyNumber_Divide}{PyObject *o1, PyObject *o2}
422 Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
423 failure. This is the equivalent of the Python expression
424 \samp{\var{o1} / \var{o2}}.
425\end{cfuncdesc}
426
427
428\begin{cfuncdesc}{PyObject*}{PyNumber_FloorDivide}{PyObject *o1, PyObject *o2}
429 Return the floor of \var{o1} divided by \var{o2}, or \NULL{} on
430 failure. This is equivalent to the ``classic'' division of
431 integers.
432 \versionadded{2.2}
433\end{cfuncdesc}
434
435
436\begin{cfuncdesc}{PyObject*}{PyNumber_TrueDivide}{PyObject *o1, PyObject *o2}
437 Return a reasonable approximation for the mathematical value of
438 \var{o1} divided by \var{o2}, or \NULL{} on failure. The return
439 value is ``approximate'' because binary floating point numbers are
440 approximate; it is not possible to represent all real numbers in
441 base two. This function can return a floating point value when
442 passed two integers.
443 \versionadded{2.2}
444\end{cfuncdesc}
445
446
447\begin{cfuncdesc}{PyObject*}{PyNumber_Remainder}{PyObject *o1, PyObject *o2}
448 Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{}
449 on failure. This is the equivalent of the Python expression
450 \samp{\var{o1} \%\ \var{o2}}.
451\end{cfuncdesc}
452
453
454\begin{cfuncdesc}{PyObject*}{PyNumber_Divmod}{PyObject *o1, PyObject *o2}
455 See the built-in function \function{divmod()}\bifuncindex{divmod}.
456 Returns \NULL{} on failure. This is the equivalent of the Python
457 expression \samp{divmod(\var{o1}, \var{o2})}.
458\end{cfuncdesc}
459
460
461\begin{cfuncdesc}{PyObject*}{PyNumber_Power}{PyObject *o1,
462 PyObject *o2, PyObject *o3}
463 See the built-in function \function{pow()}\bifuncindex{pow}.
464 Returns \NULL{} on failure. This is the equivalent of the Python
465 expression \samp{pow(\var{o1}, \var{o2}, \var{o3})}, where \var{o3}
466 is optional. If \var{o3} is to be ignored, pass \cdata{Py_None} in
467 its place (passing \NULL{} for \var{o3} would cause an illegal
468 memory access).
469\end{cfuncdesc}
470
471
472\begin{cfuncdesc}{PyObject*}{PyNumber_Negative}{PyObject *o}
473 Returns the negation of \var{o} on success, or \NULL{} on failure.
474 This is the equivalent of the Python expression \samp{-\var{o}}.
475\end{cfuncdesc}
476
477
478\begin{cfuncdesc}{PyObject*}{PyNumber_Positive}{PyObject *o}
479 Returns \var{o} on success, or \NULL{} on failure. This is the
480 equivalent of the Python expression \samp{+\var{o}}.
481\end{cfuncdesc}
482
483
484\begin{cfuncdesc}{PyObject*}{PyNumber_Absolute}{PyObject *o}
485 Returns the absolute value of \var{o}, or \NULL{} on failure. This
486 is the equivalent of the Python expression \samp{abs(\var{o})}.
487 \bifuncindex{abs}
488\end{cfuncdesc}
489
490
491\begin{cfuncdesc}{PyObject*}{PyNumber_Invert}{PyObject *o}
492 Returns the bitwise negation of \var{o} on success, or \NULL{} on
493 failure. This is the equivalent of the Python expression
494 \samp{\~\var{o}}.
495\end{cfuncdesc}
496
497
498\begin{cfuncdesc}{PyObject*}{PyNumber_Lshift}{PyObject *o1, PyObject *o2}
499 Returns the result of left shifting \var{o1} by \var{o2} on success,
500 or \NULL{} on failure. This is the equivalent of the Python
501 expression \samp{\var{o1} <\code{<} \var{o2}}.
502\end{cfuncdesc}
503
504
505\begin{cfuncdesc}{PyObject*}{PyNumber_Rshift}{PyObject *o1, PyObject *o2}
506 Returns the result of right shifting \var{o1} by \var{o2} on
507 success, or \NULL{} on failure. This is the equivalent of the
508 Python expression \samp{\var{o1} >\code{>} \var{o2}}.
509\end{cfuncdesc}
510
511
512\begin{cfuncdesc}{PyObject*}{PyNumber_And}{PyObject *o1, PyObject *o2}
513 Returns the ``bitwise and'' of \var{o2} and \var{o2} on success and
514 \NULL{} on failure. This is the equivalent of the Python expression
515 \samp{\var{o1} \&\ \var{o2}}.
516\end{cfuncdesc}
517
518
519\begin{cfuncdesc}{PyObject*}{PyNumber_Xor}{PyObject *o1, PyObject *o2}
520 Returns the ``bitwise exclusive or'' of \var{o1} by \var{o2} on
521 success, or \NULL{} on failure. This is the equivalent of the
522 Python expression \samp{\var{o1} \textasciicircum{} \var{o2}}.
523\end{cfuncdesc}
524
525\begin{cfuncdesc}{PyObject*}{PyNumber_Or}{PyObject *o1, PyObject *o2}
526 Returns the ``bitwise or'' of \var{o1} and \var{o2} on success, or
527 \NULL{} on failure. This is the equivalent of the Python expression
528 \samp{\var{o1} | \var{o2}}.
529\end{cfuncdesc}
530
531
532\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceAdd}{PyObject *o1, PyObject *o2}
533 Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
534 failure. The operation is done \emph{in-place} when \var{o1}
535 supports it. This is the equivalent of the Python statement
536 \samp{\var{o1} += \var{o2}}.
537\end{cfuncdesc}
538
539
540\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceSubtract}{PyObject *o1,
541 PyObject *o2}
542 Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
543 on failure. The operation is done \emph{in-place} when \var{o1}
544 supports it. This is the equivalent of the Python statement
545 \samp{\var{o1} -= \var{o2}}.
546\end{cfuncdesc}
547
548
549\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceMultiply}{PyObject *o1,
550 PyObject *o2}
551 Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{}
552 on failure. The operation is done \emph{in-place} when \var{o1}
553 supports it. This is the equivalent of the Python statement
554 \samp{\var{o1} *= \var{o2}}.
555\end{cfuncdesc}
556
557
558\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceDivide}{PyObject *o1,
559 PyObject *o2}
560 Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
561 failure. The operation is done \emph{in-place} when \var{o1}
562 supports it. This is the equivalent of the Python statement
563 \samp{\var{o1} /= \var{o2}}.
564\end{cfuncdesc}
565
566
567\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceFloorDivide}{PyObject *o1,
568 PyObject *o2}
569 Returns the mathematical of dividing \var{o1} by \var{o2}, or
570 \NULL{} on failure. The operation is done \emph{in-place} when
571 \var{o1} supports it. This is the equivalent of the Python
572 statement \samp{\var{o1} //= \var{o2}}.
573 \versionadded{2.2}
574\end{cfuncdesc}
575
576
577\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceTrueDivide}{PyObject *o1,
578 PyObject *o2}
579 Return a reasonable approximation for the mathematical value of
580 \var{o1} divided by \var{o2}, or \NULL{} on failure. The return
581 value is ``approximate'' because binary floating point numbers are
582 approximate; it is not possible to represent all real numbers in
583 base two. This function can return a floating point value when
584 passed two integers. The operation is done \emph{in-place} when
585 \var{o1} supports it.
586 \versionadded{2.2}
587\end{cfuncdesc}
588
589
590\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceRemainder}{PyObject *o1,
591 PyObject *o2}
592 Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{}
593 on failure. The operation is done \emph{in-place} when \var{o1}
594 supports it. This is the equivalent of the Python statement
595 \samp{\var{o1} \%= \var{o2}}.
596\end{cfuncdesc}
597
598
599\begin{cfuncdesc}{PyObject*}{PyNumber_InPlacePower}{PyObject *o1,
600 PyObject *o2, PyObject *o3}
601 See the built-in function \function{pow()}.\bifuncindex{pow}
602 Returns \NULL{} on failure. The operation is done \emph{in-place}
603 when \var{o1} supports it. This is the equivalent of the Python
604 statement \samp{\var{o1} **= \var{o2}} when o3 is \cdata{Py_None},
605 or an in-place variant of \samp{pow(\var{o1}, \var{o2}, \var{o3})}
606 otherwise. If \var{o3} is to be ignored, pass \cdata{Py_None} in its
607 place (passing \NULL{} for \var{o3} would cause an illegal memory
608 access).
609\end{cfuncdesc}
610
611\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceLshift}{PyObject *o1,
612 PyObject *o2}
613 Returns the result of left shifting \var{o1} by \var{o2} on success,
614 or \NULL{} on failure. The operation is done \emph{in-place} when
615 \var{o1} supports it. This is the equivalent of the Python
616 statement \samp{\var{o1} <\code{<=} \var{o2}}.
617\end{cfuncdesc}
618
619
620\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceRshift}{PyObject *o1,
621 PyObject *o2}
622 Returns the result of right shifting \var{o1} by \var{o2} on
623 success, or \NULL{} on failure. The operation is done
624 \emph{in-place} when \var{o1} supports it. This is the equivalent
625 of the Python statement \samp{\var{o1} >\code{>=} \var{o2}}.
626\end{cfuncdesc}
627
628
629\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceAnd}{PyObject *o1, PyObject *o2}
630 Returns the ``bitwise and'' of \var{o1} and \var{o2} on success and
631 \NULL{} on failure. The operation is done \emph{in-place} when
632 \var{o1} supports it. This is the equivalent of the Python
633 statement \samp{\var{o1} \&= \var{o2}}.
634\end{cfuncdesc}
635
636
637\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceXor}{PyObject *o1, PyObject *o2}
638 Returns the ``bitwise exclusive or'' of \var{o1} by \var{o2} on
639 success, or \NULL{} on failure. The operation is done
640 \emph{in-place} when \var{o1} supports it. This is the equivalent
641 of the Python statement \samp{\var{o1} \textasciicircum= \var{o2}}.
642\end{cfuncdesc}
643
644\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceOr}{PyObject *o1, PyObject *o2}
645 Returns the ``bitwise or'' of \var{o1} and \var{o2} on success, or
646 \NULL{} on failure. The operation is done \emph{in-place} when
647 \var{o1} supports it. This is the equivalent of the Python
648 statement \samp{\var{o1} |= \var{o2}}.
649\end{cfuncdesc}
650
651\begin{cfuncdesc}{int}{PyNumber_Coerce}{PyObject **p1, PyObject **p2}
652 This function takes the addresses of two variables of type
653 \ctype{PyObject*}. If the objects pointed to by \code{*\var{p1}}
654 and \code{*\var{p2}} have the same type, increment their reference
655 count and return \code{0} (success). If the objects can be converted
656 to a common numeric type, replace \code{*p1} and \code{*p2} by their
657 converted value (with 'new' reference counts), and return \code{0}.
658 If no conversion is possible, or if some other error occurs, return
659 \code{-1} (failure) and don't increment the reference counts. The
660 call \code{PyNumber_Coerce(\&o1, \&o2)} is equivalent to the Python
661 statement \samp{\var{o1}, \var{o2} = coerce(\var{o1}, \var{o2})}.
662 \bifuncindex{coerce}
663\end{cfuncdesc}
664
665\begin{cfuncdesc}{PyObject*}{PyNumber_Int}{PyObject *o}
666 Returns the \var{o} converted to an integer object on success, or
Walter Dörwaldf1715402002-11-19 20:49:15 +0000667 \NULL{} on failure. If the argument is outside the integer range
668 a long object will be returned instead. This is the equivalent
669 of the Python expression \samp{int(\var{o})}.\bifuncindex{int}
Fred Drake3adf79e2001-10-12 19:01:43 +0000670\end{cfuncdesc}
671
672\begin{cfuncdesc}{PyObject*}{PyNumber_Long}{PyObject *o}
673 Returns the \var{o} converted to a long integer object on success,
674 or \NULL{} on failure. This is the equivalent of the Python
675 expression \samp{long(\var{o})}.\bifuncindex{long}
676\end{cfuncdesc}
677
678\begin{cfuncdesc}{PyObject*}{PyNumber_Float}{PyObject *o}
679 Returns the \var{o} converted to a float object on success, or
680 \NULL{} on failure. This is the equivalent of the Python expression
681 \samp{float(\var{o})}.\bifuncindex{float}
682\end{cfuncdesc}
683
684
685\section{Sequence Protocol \label{sequence}}
686
687\begin{cfuncdesc}{int}{PySequence_Check}{PyObject *o}
688 Return \code{1} if the object provides sequence protocol, and
689 \code{0} otherwise. This function always succeeds.
690\end{cfuncdesc}
691
692\begin{cfuncdesc}{int}{PySequence_Size}{PyObject *o}
693 Returns the number of objects in sequence \var{o} on success, and
694 \code{-1} on failure. For objects that do not provide sequence
695 protocol, this is equivalent to the Python expression
696 \samp{len(\var{o})}.\bifuncindex{len}
697\end{cfuncdesc}
698
699\begin{cfuncdesc}{int}{PySequence_Length}{PyObject *o}
700 Alternate name for \cfunction{PySequence_Size()}.
701\end{cfuncdesc}
702
703\begin{cfuncdesc}{PyObject*}{PySequence_Concat}{PyObject *o1, PyObject *o2}
704 Return the concatenation of \var{o1} and \var{o2} on success, and
705 \NULL{} on failure. This is the equivalent of the Python
706 expression \samp{\var{o1} + \var{o2}}.
707\end{cfuncdesc}
708
709
710\begin{cfuncdesc}{PyObject*}{PySequence_Repeat}{PyObject *o, int count}
711 Return the result of repeating sequence object \var{o} \var{count}
712 times, or \NULL{} on failure. This is the equivalent of the Python
713 expression \samp{\var{o} * \var{count}}.
714\end{cfuncdesc}
715
716\begin{cfuncdesc}{PyObject*}{PySequence_InPlaceConcat}{PyObject *o1,
717 PyObject *o2}
718 Return the concatenation of \var{o1} and \var{o2} on success, and
719 \NULL{} on failure. The operation is done \emph{in-place} when
720 \var{o1} supports it. This is the equivalent of the Python
721 expression \samp{\var{o1} += \var{o2}}.
722\end{cfuncdesc}
723
724
725\begin{cfuncdesc}{PyObject*}{PySequence_InPlaceRepeat}{PyObject *o, int count}
726 Return the result of repeating sequence object \var{o} \var{count}
727 times, or \NULL{} on failure. The operation is done \emph{in-place}
728 when \var{o} supports it. This is the equivalent of the Python
729 expression \samp{\var{o} *= \var{count}}.
730\end{cfuncdesc}
731
732
733\begin{cfuncdesc}{PyObject*}{PySequence_GetItem}{PyObject *o, int i}
734 Return the \var{i}th element of \var{o}, or \NULL{} on failure.
735 This is the equivalent of the Python expression
736 \samp{\var{o}[\var{i}]}.
737\end{cfuncdesc}
738
739
740\begin{cfuncdesc}{PyObject*}{PySequence_GetSlice}{PyObject *o, int i1, int i2}
741 Return the slice of sequence object \var{o} between \var{i1} and
742 \var{i2}, or \NULL{} on failure. This is the equivalent of the
743 Python expression \samp{\var{o}[\var{i1}:\var{i2}]}.
744\end{cfuncdesc}
745
746
747\begin{cfuncdesc}{int}{PySequence_SetItem}{PyObject *o, int i, PyObject *v}
748 Assign object \var{v} to the \var{i}th element of \var{o}. Returns
749 \code{-1} on failure. This is the equivalent of the Python
750 statement \samp{\var{o}[\var{i}] = \var{v}}.
751\end{cfuncdesc}
752
753\begin{cfuncdesc}{int}{PySequence_DelItem}{PyObject *o, int i}
754 Delete the \var{i}th element of object \var{o}. Returns \code{-1}
755 on failure. This is the equivalent of the Python statement
756 \samp{del \var{o}[\var{i}]}.
757\end{cfuncdesc}
758
759\begin{cfuncdesc}{int}{PySequence_SetSlice}{PyObject *o, int i1,
760 int i2, PyObject *v}
761 Assign the sequence object \var{v} to the slice in sequence object
762 \var{o} from \var{i1} to \var{i2}. This is the equivalent of the
763 Python statement \samp{\var{o}[\var{i1}:\var{i2}] = \var{v}}.
764\end{cfuncdesc}
765
766\begin{cfuncdesc}{int}{PySequence_DelSlice}{PyObject *o, int i1, int i2}
767 Delete the slice in sequence object \var{o} from \var{i1} to
768 \var{i2}. Returns \code{-1} on failure. This is the equivalent of
769 the Python statement \samp{del \var{o}[\var{i1}:\var{i2}]}.
770\end{cfuncdesc}
771
772\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
773 Returns the \var{o} as a tuple on success, and \NULL{} on failure.
774 This is equivalent to the Python expression \samp{tuple(\var{o})}.
775 \bifuncindex{tuple}
776\end{cfuncdesc}
777
778\begin{cfuncdesc}{int}{PySequence_Count}{PyObject *o, PyObject *value}
779 Return the number of occurrences of \var{value} in \var{o}, that is,
780 return the number of keys for which \code{\var{o}[\var{key}] ==
781 \var{value}}. On failure, return \code{-1}. This is equivalent to
782 the Python expression \samp{\var{o}.count(\var{value})}.
783\end{cfuncdesc}
784
785\begin{cfuncdesc}{int}{PySequence_Contains}{PyObject *o, PyObject *value}
786 Determine if \var{o} contains \var{value}. If an item in \var{o} is
787 equal to \var{value}, return \code{1}, otherwise return \code{0}.
788 On error, return \code{-1}. This is equivalent to the Python
789 expression \samp{\var{value} in \var{o}}.
790\end{cfuncdesc}
791
792\begin{cfuncdesc}{int}{PySequence_Index}{PyObject *o, PyObject *value}
793 Return the first index \var{i} for which \code{\var{o}[\var{i}] ==
794 \var{value}}. On error, return \code{-1}. This is equivalent to
795 the Python expression \samp{\var{o}.index(\var{value})}.
796\end{cfuncdesc}
797
798\begin{cfuncdesc}{PyObject*}{PySequence_List}{PyObject *o}
799 Return a list object with the same contents as the arbitrary
800 sequence \var{o}. The returned list is guaranteed to be new.
801\end{cfuncdesc}
802
803\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
804 Return a tuple object with the same contents as the arbitrary
805 sequence \var{o}. If \var{o} is a tuple, a new reference will be
806 returned, otherwise a tuple will be constructed with the appropriate
807 contents.
808\end{cfuncdesc}
809
810\begin{cfuncdesc}{PyObject*}{PySequence_Fast}{PyObject *o, const char *m}
811 Returns the sequence \var{o} as a tuple, unless it is already a
812 tuple or list, in which case \var{o} is returned. Use
813 \cfunction{PySequence_Fast_GET_ITEM()} to access the members of the
814 result. Returns \NULL{} on failure. If the object is not a
815 sequence, raises \exception{TypeError} with \var{m} as the message
816 text.
817\end{cfuncdesc}
818
819\begin{cfuncdesc}{PyObject*}{PySequence_Fast_GET_ITEM}{PyObject *o, int i}
820 Return the \var{i}th element of \var{o}, assuming that \var{o} was
Fred Drakec37b65e2001-11-28 07:26:15 +0000821 returned by \cfunction{PySequence_Fast()}, \var{o} is not \NULL,
Tim Peters1fc240e2001-10-26 05:06:50 +0000822 and that \var{i} is within bounds.
823\end{cfuncdesc}
824
Martin v. Löwis01f94bd2002-05-08 08:44:21 +0000825\begin{cfuncdesc}{PyObject*}{PySequence_ITEM}{PyObject *o, int i}
826 Return the \var{i}th element of \var{o} or \NULL on failure.
827 Macro form of \cfunction{PySequence_GetItem()} but without checking
828 that \cfunction{PySequence_Check(\var{o})} is true and without
Fred Drake86228e42002-05-23 16:02:28 +0000829 adjustment for negative indices.
830 \versionadded{2.3}
Martin v. Löwis01f94bd2002-05-08 08:44:21 +0000831\end{cfuncdesc}
832
Tim Peters1fc240e2001-10-26 05:06:50 +0000833\begin{cfuncdesc}{int}{PySequence_Fast_GET_SIZE}{PyObject *o}
834 Returns the length of \var{o}, assuming that \var{o} was
835 returned by \cfunction{PySequence_Fast()} and that \var{o} is
Fred Drakec37b65e2001-11-28 07:26:15 +0000836 not \NULL. The size can also be gotten by calling
Tim Peters1fc240e2001-10-26 05:06:50 +0000837 \cfunction{PySequence_Size()} on \var{o}, but
838 \cfunction{PySequence_Fast_GET_SIZE()} is faster because it can
839 assume \var{o} is a list or tuple.
Fred Drake3adf79e2001-10-12 19:01:43 +0000840\end{cfuncdesc}
841
842
843\section{Mapping Protocol \label{mapping}}
844
845\begin{cfuncdesc}{int}{PyMapping_Check}{PyObject *o}
846 Return \code{1} if the object provides mapping protocol, and
847 \code{0} otherwise. This function always succeeds.
848\end{cfuncdesc}
849
850
851\begin{cfuncdesc}{int}{PyMapping_Length}{PyObject *o}
852 Returns the number of keys in object \var{o} on success, and
853 \code{-1} on failure. For objects that do not provide mapping
854 protocol, this is equivalent to the Python expression
855 \samp{len(\var{o})}.\bifuncindex{len}
856\end{cfuncdesc}
857
858
859\begin{cfuncdesc}{int}{PyMapping_DelItemString}{PyObject *o, char *key}
860 Remove the mapping for object \var{key} from the object \var{o}.
861 Return \code{-1} on failure. This is equivalent to the Python
862 statement \samp{del \var{o}[\var{key}]}.
863\end{cfuncdesc}
864
865
866\begin{cfuncdesc}{int}{PyMapping_DelItem}{PyObject *o, PyObject *key}
867 Remove the mapping for object \var{key} from the object \var{o}.
868 Return \code{-1} on failure. This is equivalent to the Python
869 statement \samp{del \var{o}[\var{key}]}.
870\end{cfuncdesc}
871
872
873\begin{cfuncdesc}{int}{PyMapping_HasKeyString}{PyObject *o, char *key}
874 On success, return \code{1} if the mapping object has the key
875 \var{key} and \code{0} otherwise. This is equivalent to the Python
876 expression \samp{\var{o}.has_key(\var{key})}. This function always
877 succeeds.
878\end{cfuncdesc}
879
880
881\begin{cfuncdesc}{int}{PyMapping_HasKey}{PyObject *o, PyObject *key}
882 Return \code{1} if the mapping object has the key \var{key} and
883 \code{0} otherwise. This is equivalent to the Python expression
884 \samp{\var{o}.has_key(\var{key})}. This function always succeeds.
885\end{cfuncdesc}
886
887
888\begin{cfuncdesc}{PyObject*}{PyMapping_Keys}{PyObject *o}
889 On success, return a list of the keys in object \var{o}. On
890 failure, return \NULL. This is equivalent to the Python expression
891 \samp{\var{o}.keys()}.
892\end{cfuncdesc}
893
894
895\begin{cfuncdesc}{PyObject*}{PyMapping_Values}{PyObject *o}
896 On success, return a list of the values in object \var{o}. On
897 failure, return \NULL. This is equivalent to the Python expression
898 \samp{\var{o}.values()}.
899\end{cfuncdesc}
900
901
902\begin{cfuncdesc}{PyObject*}{PyMapping_Items}{PyObject *o}
903 On success, return a list of the items in object \var{o}, where each
904 item is a tuple containing a key-value pair. On failure, return
905 \NULL. This is equivalent to the Python expression
906 \samp{\var{o}.items()}.
907\end{cfuncdesc}
908
909
910\begin{cfuncdesc}{PyObject*}{PyMapping_GetItemString}{PyObject *o, char *key}
911 Return element of \var{o} corresponding to the object \var{key} or
912 \NULL{} on failure. This is the equivalent of the Python expression
913 \samp{\var{o}[\var{key}]}.
914\end{cfuncdesc}
915
916\begin{cfuncdesc}{int}{PyMapping_SetItemString}{PyObject *o, char *key,
917 PyObject *v}
918 Map the object \var{key} to the value \var{v} in object \var{o}.
919 Returns \code{-1} on failure. This is the equivalent of the Python
920 statement \samp{\var{o}[\var{key}] = \var{v}}.
921\end{cfuncdesc}
922
923
924\section{Iterator Protocol \label{iterator}}
925
926\versionadded{2.2}
927
928There are only a couple of functions specifically for working with
929iterators.
930
931\begin{cfuncdesc}{int}{PyIter_Check}{PyObject *o}
932 Return true if the object \var{o} supports the iterator protocol.
933\end{cfuncdesc}
934
935\begin{cfuncdesc}{PyObject*}{PyIter_Next}{PyObject *o}
936 Return the next value from the iteration \var{o}. If the object is
937 an iterator, this retrieves the next value from the iteration, and
938 returns \NULL{} with no exception set if there are no remaining
939 items. If the object is not an iterator, \exception{TypeError} is
940 raised, or if there is an error in retrieving the item, returns
941 \NULL{} and passes along the exception.
942\end{cfuncdesc}
943
944To write a loop which iterates over an iterator, the C code should
945look something like this:
946
947\begin{verbatim}
Fred Drake314bae52002-03-11 18:46:29 +0000948PyObject *iterator = PyObject_GetIter(obj);
Fred Drake3adf79e2001-10-12 19:01:43 +0000949PyObject *item;
950
Fred Drake314bae52002-03-11 18:46:29 +0000951if (iterator == NULL) {
952 /* propagate error */
953}
954
955while (item = PyIter_Next(iterator)) {
Fred Drake3adf79e2001-10-12 19:01:43 +0000956 /* do something with item */
Fred Drake8b8fe282001-12-26 16:53:48 +0000957 ...
958 /* release reference when done */
959 Py_DECREF(item);
Fred Drake3adf79e2001-10-12 19:01:43 +0000960}
Fred Drake314bae52002-03-11 18:46:29 +0000961
962Py_DECREF(iterator);
963
Fred Drake3adf79e2001-10-12 19:01:43 +0000964if (PyErr_Occurred()) {
Fred Drake314bae52002-03-11 18:46:29 +0000965 /* propagate error */
Fred Drake3adf79e2001-10-12 19:01:43 +0000966}
967else {
968 /* continue doing useful work */
969}
Fred Drake8b8fe282001-12-26 16:53:48 +0000970\end{verbatim}
971
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000972
Fred Drake94ead572001-11-09 23:34:26 +0000973\section{Buffer Protocol \label{abstract-buffer}}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000974
975\begin{cfuncdesc}{int}{PyObject_AsCharBuffer}{PyObject *obj,
Fred Drake94ead572001-11-09 23:34:26 +0000976 const char **buffer,
977 int *buffer_len}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000978 Returns a pointer to a read-only memory location useable as character-
979 based input. The \var{obj} argument must support the single-segment
Fred Drake243ea712002-04-04 04:10:36 +0000980 character buffer interface. On success, returns \code{0}, sets
Thomas Hellerbfeeeee2001-11-12 07:46:31 +0000981 \var{buffer} to the memory location and \var{buffer_len} to the buffer
Fred Drake243ea712002-04-04 04:10:36 +0000982 length. Returns \code{-1} and sets a \exception{TypeError} on error.
Fred Drake94ead572001-11-09 23:34:26 +0000983 \versionadded{1.6}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000984\end{cfuncdesc}
985
986\begin{cfuncdesc}{int}{PyObject_AsReadBuffer}{PyObject *obj,
Fred Drake94ead572001-11-09 23:34:26 +0000987 const char **buffer,
988 int *buffer_len}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000989 Returns a pointer to a read-only memory location containing
990 arbitrary data. The \var{obj} argument must support the
991 single-segment readable buffer interface. On success, returns
Fred Drake243ea712002-04-04 04:10:36 +0000992 \code{0}, sets \var{buffer} to the memory location and \var{buffer_len}
993 to the buffer length. Returns \code{-1} and sets a
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000994 \exception{TypeError} on error.
Fred Drake94ead572001-11-09 23:34:26 +0000995 \versionadded{1.6}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000996\end{cfuncdesc}
997
998\begin{cfuncdesc}{int}{PyObject_CheckReadBuffer}{PyObject *o}
999 Returns \code{1} if \var{o} supports the single-segment readable
1000 buffer interface. Otherwise returns \code{0}.
Fred Drake94ead572001-11-09 23:34:26 +00001001 \versionadded{2.2}
Fred Drake8b8fe282001-12-26 16:53:48 +00001002\end{cfuncdesc}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001003
1004\begin{cfuncdesc}{int}{PyObject_AsWriteBuffer}{PyObject *obj,
Raymond Hettinger51306902002-09-08 04:39:28 +00001005 char **buffer,
Fred Drake94ead572001-11-09 23:34:26 +00001006 int *buffer_len}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001007 Returns a pointer to a writeable memory location. The \var{obj}
1008 argument must support the single-segment, character buffer
Fred Drake243ea712002-04-04 04:10:36 +00001009 interface. On success, returns \code{0}, sets \var{buffer} to the
Thomas Hellerbfeeeee2001-11-12 07:46:31 +00001010 memory location and \var{buffer_len} to the buffer length. Returns
Fred Drake243ea712002-04-04 04:10:36 +00001011 \code{-1} and sets a \exception{TypeError} on error.
Fred Drake94ead572001-11-09 23:34:26 +00001012 \versionadded{1.6}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001013\end{cfuncdesc}