blob: f50ebc41fa20d5a6c580bae9658d20e5b27d4887 [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
Martin v. Löwis29fafd82006-03-01 05:16:03 +000019\begin{cfuncdesc}{int}{PyObject_HasAttrString}{PyObject *o, const char *attr_name}
Fred Drake3adf79e2001-10-12 19:01:43 +000020 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,
Martin v. Löwis29fafd82006-03-01 05:16:03 +000027 const char *attr_name}
Fred Drake3adf79e2001-10-12 19:01:43 +000028 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,
Martin v. Löwis29fafd82006-03-01 05:16:03 +000053 const char *attr_name, PyObject *v}
Fred Drake3adf79e2001-10-12 19:01:43 +000054 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
Martin v. Löwis29fafd82006-03-01 05:16:03 +000070\begin{cfuncdesc}{int}{PyObject_DelAttrString}{PyObject *o, const char *attr_name}
Fred Drake3adf79e2001-10-12 19:01:43 +000071 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
Neal Norwitz28ad48e2006-03-17 08:04:59 +0000236 expression \samp{\var{callable_object}(*\var{args}, **\var{kw})}.
Fred Drakef5368272003-01-25 07:48:13 +0000237 \versionadded{2.2}
Fred Drake0e0b6182002-04-15 20:51:19 +0000238\end{cfuncdesc}
239
240
Fred Drake3adf79e2001-10-12 19:01:43 +0000241\begin{cfuncdesc}{PyObject*}{PyObject_CallObject}{PyObject *callable_object,
242 PyObject *args}
243 Call a callable Python object \var{callable_object}, with arguments
244 given by the tuple \var{args}. If no arguments are needed, then
245 \var{args} may be \NULL. Returns the result of the call on
246 success, or \NULL{} on failure. This is the equivalent of the
Neal Norwitz28ad48e2006-03-17 08:04:59 +0000247 Python expression \samp{\var{callable_object}(*\var{args})}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000248\end{cfuncdesc}
249
Fred Drakec44e9ec2001-10-26 16:38:38 +0000250\begin{cfuncdesc}{PyObject*}{PyObject_CallFunction}{PyObject *callable,
251 char *format, \moreargs}
252 Call a callable Python object \var{callable}, with a variable
Fred Drake3adf79e2001-10-12 19:01:43 +0000253 number of C arguments. The C arguments are described using a
254 \cfunction{Py_BuildValue()} style format string. The format may be
255 \NULL, indicating that no arguments are provided. Returns the
256 result of the call on success, or \NULL{} on failure. This is the
Neal Norwitz28ad48e2006-03-17 08:04:59 +0000257 equivalent of the Python expression \samp{\var{callable}(*\var{args})}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000258\end{cfuncdesc}
259
260
261\begin{cfuncdesc}{PyObject*}{PyObject_CallMethod}{PyObject *o,
Fred Drakec44e9ec2001-10-26 16:38:38 +0000262 char *method, char *format,
263 \moreargs}
Raymond Hettinger2619c9e2003-12-07 11:40:17 +0000264 Call the method named \var{method} of object \var{o} with a variable
Fred Drake3adf79e2001-10-12 19:01:43 +0000265 number of C arguments. The C arguments are described by a
Andrew M. Kuchlingfe80b632004-08-07 17:53:05 +0000266 \cfunction{Py_BuildValue()} format string that should
267 produce a tuple. The format may be \NULL,
Fred Drake3adf79e2001-10-12 19:01:43 +0000268 indicating that no arguments are provided. Returns the result of the
269 call on success, or \NULL{} on failure. This is the equivalent of
Fred Drakec44e9ec2001-10-26 16:38:38 +0000270 the Python expression \samp{\var{o}.\var{method}(\var{args})}.
271\end{cfuncdesc}
272
273
Fred Drakeb0c079e2001-10-28 02:39:03 +0000274\begin{cfuncdesc}{PyObject*}{PyObject_CallFunctionObjArgs}{PyObject *callable,
275 \moreargs,
276 \code{NULL}}
Fred Drakec44e9ec2001-10-26 16:38:38 +0000277 Call a callable Python object \var{callable}, with a variable
278 number of \ctype{PyObject*} arguments. The arguments are provided
279 as a variable number of parameters followed by \NULL.
280 Returns the result of the call on success, or \NULL{} on failure.
281 \versionadded{2.2}
282\end{cfuncdesc}
283
284
Fred Drakeb0c079e2001-10-28 02:39:03 +0000285\begin{cfuncdesc}{PyObject*}{PyObject_CallMethodObjArgs}{PyObject *o,
286 PyObject *name,
287 \moreargs,
288 \code{NULL}}
Fred Drakec44e9ec2001-10-26 16:38:38 +0000289 Calls a method of the object \var{o}, where the name of the method
290 is given as a Python string object in \var{name}. It is called with
291 a variable number of \ctype{PyObject*} arguments. The arguments are
292 provided as a variable number of parameters followed by \NULL.
293 Returns the result of the call on success, or \NULL{} on failure.
294 \versionadded{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +0000295\end{cfuncdesc}
296
297
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000298\begin{cfuncdesc}{long}{PyObject_Hash}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000299 Compute and return the hash value of an object \var{o}. On failure,
300 return \code{-1}. This is the equivalent of the Python expression
301 \samp{hash(\var{o})}.\bifuncindex{hash}
302\end{cfuncdesc}
303
304
305\begin{cfuncdesc}{int}{PyObject_IsTrue}{PyObject *o}
306 Returns \code{1} if the object \var{o} is considered to be true, and
307 \code{0} otherwise. This is equivalent to the Python expression
Raymond Hettinger2ed6dff2003-04-16 17:28:12 +0000308 \samp{not not \var{o}}. On failure, return \code{-1}.
309\end{cfuncdesc}
310
311
312\begin{cfuncdesc}{int}{PyObject_Not}{PyObject *o}
313 Returns \code{0} if the object \var{o} is considered to be true, and
314 \code{1} otherwise. This is equivalent to the Python expression
315 \samp{not \var{o}}. On failure, return \code{-1}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000316\end{cfuncdesc}
317
318
319\begin{cfuncdesc}{PyObject*}{PyObject_Type}{PyObject *o}
320 When \var{o} is non-\NULL, returns a type object corresponding to
321 the object type of object \var{o}. On failure, raises
322 \exception{SystemError} and returns \NULL. This is equivalent to
Fred Drake12dd7b12003-04-09 18:15:57 +0000323 the Python expression \code{type(\var{o})}.\bifuncindex{type}
Guido van Rossum6db77182003-04-09 18:02:23 +0000324 This function increments the reference count of the return value.
325 There's really no reason to use this function instead of the
326 common expression \code{\var{o}->ob_type}, which returns a pointer
Fred Drake12dd7b12003-04-09 18:15:57 +0000327 of type \ctype{PyTypeObject*}, except when the incremented reference
Guido van Rossum6db77182003-04-09 18:02:23 +0000328 count is needed.
Fred Drake3adf79e2001-10-12 19:01:43 +0000329\end{cfuncdesc}
330
331\begin{cfuncdesc}{int}{PyObject_TypeCheck}{PyObject *o, PyTypeObject *type}
332 Return true if the object \var{o} is of type \var{type} or a subtype
333 of \var{type}. Both parameters must be non-\NULL.
334 \versionadded{2.2}
335\end{cfuncdesc}
336
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000337\begin{cfuncdesc}{Py_ssize_t}{PyObject_Length}{PyObject *o}
338\cfuncline{Py_ssize_t}{PyObject_Size}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000339 Return the length of object \var{o}. If the object \var{o} provides
Raymond Hettinger4cd5a082004-01-04 03:11:45 +0000340 either the sequence and mapping protocols, the sequence length is
Fred Drake3adf79e2001-10-12 19:01:43 +0000341 returned. On error, \code{-1} is returned. This is the equivalent
342 to the Python expression \samp{len(\var{o})}.\bifuncindex{len}
343\end{cfuncdesc}
344
345
346\begin{cfuncdesc}{PyObject*}{PyObject_GetItem}{PyObject *o, PyObject *key}
347 Return element of \var{o} corresponding to the object \var{key} or
348 \NULL{} on failure. This is the equivalent of the Python expression
349 \samp{\var{o}[\var{key}]}.
350\end{cfuncdesc}
351
352
353\begin{cfuncdesc}{int}{PyObject_SetItem}{PyObject *o,
354 PyObject *key, PyObject *v}
355 Map the object \var{key} to the value \var{v}. Returns \code{-1} on
356 failure. This is the equivalent of the Python statement
357 \samp{\var{o}[\var{key}] = \var{v}}.
358\end{cfuncdesc}
359
360
361\begin{cfuncdesc}{int}{PyObject_DelItem}{PyObject *o, PyObject *key}
362 Delete the mapping for \var{key} from \var{o}. Returns \code{-1} on
363 failure. This is the equivalent of the Python statement \samp{del
364 \var{o}[\var{key}]}.
365\end{cfuncdesc}
366
367\begin{cfuncdesc}{int}{PyObject_AsFileDescriptor}{PyObject *o}
368 Derives a file-descriptor from a Python object. If the object is an
369 integer or long integer, its value is returned. If not, the
370 object's \method{fileno()} method is called if it exists; the method
371 must return an integer or long integer, which is returned as the
372 file descriptor value. Returns \code{-1} on failure.
373\end{cfuncdesc}
374
375\begin{cfuncdesc}{PyObject*}{PyObject_Dir}{PyObject *o}
376 This is equivalent to the Python expression \samp{dir(\var{o})},
377 returning a (possibly empty) list of strings appropriate for the
378 object argument, or \NULL{} if there was an error. If the argument
379 is \NULL, this is like the Python \samp{dir()}, returning the names
380 of the current locals; in this case, if no execution frame is active
381 then \NULL{} is returned but \cfunction{PyErr_Occurred()} will
382 return false.
383\end{cfuncdesc}
384
Fred Drake314bae52002-03-11 18:46:29 +0000385\begin{cfuncdesc}{PyObject*}{PyObject_GetIter}{PyObject *o}
386 This is equivalent to the Python expression \samp{iter(\var{o})}.
387 It returns a new iterator for the object argument, or the object
388 itself if the object is already an iterator. Raises
389 \exception{TypeError} and returns \NULL{} if the object cannot be
390 iterated.
391\end{cfuncdesc}
392
Fred Drake3adf79e2001-10-12 19:01:43 +0000393
394\section{Number Protocol \label{number}}
395
396\begin{cfuncdesc}{int}{PyNumber_Check}{PyObject *o}
397 Returns \code{1} if the object \var{o} provides numeric protocols,
398 and false otherwise. This function always succeeds.
399\end{cfuncdesc}
400
401
402\begin{cfuncdesc}{PyObject*}{PyNumber_Add}{PyObject *o1, PyObject *o2}
403 Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
404 failure. This is the equivalent of the Python expression
405 \samp{\var{o1} + \var{o2}}.
406\end{cfuncdesc}
407
408
409\begin{cfuncdesc}{PyObject*}{PyNumber_Subtract}{PyObject *o1, PyObject *o2}
410 Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
411 on failure. This is the equivalent of the Python expression
412 \samp{\var{o1} - \var{o2}}.
413\end{cfuncdesc}
414
415
416\begin{cfuncdesc}{PyObject*}{PyNumber_Multiply}{PyObject *o1, PyObject *o2}
417 Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{}
418 on failure. This is the equivalent of the Python expression
419 \samp{\var{o1} * \var{o2}}.
420\end{cfuncdesc}
421
422
423\begin{cfuncdesc}{PyObject*}{PyNumber_Divide}{PyObject *o1, PyObject *o2}
424 Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
425 failure. This is the equivalent of the Python expression
426 \samp{\var{o1} / \var{o2}}.
427\end{cfuncdesc}
428
429
430\begin{cfuncdesc}{PyObject*}{PyNumber_FloorDivide}{PyObject *o1, PyObject *o2}
431 Return the floor of \var{o1} divided by \var{o2}, or \NULL{} on
432 failure. This is equivalent to the ``classic'' division of
433 integers.
434 \versionadded{2.2}
435\end{cfuncdesc}
436
437
438\begin{cfuncdesc}{PyObject*}{PyNumber_TrueDivide}{PyObject *o1, PyObject *o2}
439 Return a reasonable approximation for the mathematical value of
440 \var{o1} divided by \var{o2}, or \NULL{} on failure. The return
441 value is ``approximate'' because binary floating point numbers are
442 approximate; it is not possible to represent all real numbers in
443 base two. This function can return a floating point value when
444 passed two integers.
445 \versionadded{2.2}
446\end{cfuncdesc}
447
448
449\begin{cfuncdesc}{PyObject*}{PyNumber_Remainder}{PyObject *o1, PyObject *o2}
450 Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{}
451 on failure. This is the equivalent of the Python expression
452 \samp{\var{o1} \%\ \var{o2}}.
453\end{cfuncdesc}
454
455
456\begin{cfuncdesc}{PyObject*}{PyNumber_Divmod}{PyObject *o1, PyObject *o2}
457 See the built-in function \function{divmod()}\bifuncindex{divmod}.
458 Returns \NULL{} on failure. This is the equivalent of the Python
459 expression \samp{divmod(\var{o1}, \var{o2})}.
460\end{cfuncdesc}
461
462
463\begin{cfuncdesc}{PyObject*}{PyNumber_Power}{PyObject *o1,
464 PyObject *o2, PyObject *o3}
465 See the built-in function \function{pow()}\bifuncindex{pow}.
466 Returns \NULL{} on failure. This is the equivalent of the Python
467 expression \samp{pow(\var{o1}, \var{o2}, \var{o3})}, where \var{o3}
468 is optional. If \var{o3} is to be ignored, pass \cdata{Py_None} in
469 its place (passing \NULL{} for \var{o3} would cause an illegal
470 memory access).
471\end{cfuncdesc}
472
473
474\begin{cfuncdesc}{PyObject*}{PyNumber_Negative}{PyObject *o}
475 Returns the negation of \var{o} on success, or \NULL{} on failure.
476 This is the equivalent of the Python expression \samp{-\var{o}}.
477\end{cfuncdesc}
478
479
480\begin{cfuncdesc}{PyObject*}{PyNumber_Positive}{PyObject *o}
481 Returns \var{o} on success, or \NULL{} on failure. This is the
482 equivalent of the Python expression \samp{+\var{o}}.
483\end{cfuncdesc}
484
485
486\begin{cfuncdesc}{PyObject*}{PyNumber_Absolute}{PyObject *o}
487 Returns the absolute value of \var{o}, or \NULL{} on failure. This
488 is the equivalent of the Python expression \samp{abs(\var{o})}.
489 \bifuncindex{abs}
490\end{cfuncdesc}
491
492
493\begin{cfuncdesc}{PyObject*}{PyNumber_Invert}{PyObject *o}
494 Returns the bitwise negation of \var{o} on success, or \NULL{} on
495 failure. This is the equivalent of the Python expression
496 \samp{\~\var{o}}.
497\end{cfuncdesc}
498
499
500\begin{cfuncdesc}{PyObject*}{PyNumber_Lshift}{PyObject *o1, PyObject *o2}
501 Returns the result of left shifting \var{o1} by \var{o2} on success,
502 or \NULL{} on failure. This is the equivalent of the Python
503 expression \samp{\var{o1} <\code{<} \var{o2}}.
504\end{cfuncdesc}
505
506
507\begin{cfuncdesc}{PyObject*}{PyNumber_Rshift}{PyObject *o1, PyObject *o2}
508 Returns the result of right shifting \var{o1} by \var{o2} on
509 success, or \NULL{} on failure. This is the equivalent of the
510 Python expression \samp{\var{o1} >\code{>} \var{o2}}.
511\end{cfuncdesc}
512
513
514\begin{cfuncdesc}{PyObject*}{PyNumber_And}{PyObject *o1, PyObject *o2}
Raymond Hettingere5fced72004-04-17 11:57:40 +0000515 Returns the ``bitwise and'' of \var{o1} and \var{o2} on success and
Fred Drake3adf79e2001-10-12 19:01:43 +0000516 \NULL{} on failure. This is the equivalent of the Python expression
517 \samp{\var{o1} \&\ \var{o2}}.
518\end{cfuncdesc}
519
520
521\begin{cfuncdesc}{PyObject*}{PyNumber_Xor}{PyObject *o1, PyObject *o2}
522 Returns the ``bitwise exclusive or'' of \var{o1} by \var{o2} on
523 success, or \NULL{} on failure. This is the equivalent of the
524 Python expression \samp{\var{o1} \textasciicircum{} \var{o2}}.
525\end{cfuncdesc}
526
527\begin{cfuncdesc}{PyObject*}{PyNumber_Or}{PyObject *o1, PyObject *o2}
528 Returns the ``bitwise or'' of \var{o1} and \var{o2} on success, or
529 \NULL{} on failure. This is the equivalent of the Python expression
530 \samp{\var{o1} | \var{o2}}.
531\end{cfuncdesc}
532
533
534\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceAdd}{PyObject *o1, PyObject *o2}
535 Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
536 failure. The operation is done \emph{in-place} when \var{o1}
537 supports it. This is the equivalent of the Python statement
538 \samp{\var{o1} += \var{o2}}.
539\end{cfuncdesc}
540
541
542\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceSubtract}{PyObject *o1,
543 PyObject *o2}
544 Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
545 on failure. The operation is done \emph{in-place} when \var{o1}
546 supports it. This is the equivalent of the Python statement
547 \samp{\var{o1} -= \var{o2}}.
548\end{cfuncdesc}
549
550
551\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceMultiply}{PyObject *o1,
552 PyObject *o2}
553 Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{}
554 on failure. The operation is done \emph{in-place} when \var{o1}
555 supports it. This is the equivalent of the Python statement
556 \samp{\var{o1} *= \var{o2}}.
557\end{cfuncdesc}
558
559
560\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceDivide}{PyObject *o1,
561 PyObject *o2}
562 Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
563 failure. The operation is done \emph{in-place} when \var{o1}
564 supports it. This is the equivalent of the Python statement
565 \samp{\var{o1} /= \var{o2}}.
566\end{cfuncdesc}
567
568
569\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceFloorDivide}{PyObject *o1,
570 PyObject *o2}
Andrew M. Kuchling1b50b432004-06-05 19:00:55 +0000571 Returns the mathematical floor of dividing \var{o1} by \var{o2}, or
Fred Drake3adf79e2001-10-12 19:01:43 +0000572 \NULL{} on failure. The operation is done \emph{in-place} when
573 \var{o1} supports it. This is the equivalent of the Python
574 statement \samp{\var{o1} //= \var{o2}}.
575 \versionadded{2.2}
576\end{cfuncdesc}
577
578
579\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceTrueDivide}{PyObject *o1,
580 PyObject *o2}
581 Return a reasonable approximation for the mathematical value of
582 \var{o1} divided by \var{o2}, or \NULL{} on failure. The return
583 value is ``approximate'' because binary floating point numbers are
584 approximate; it is not possible to represent all real numbers in
585 base two. This function can return a floating point value when
586 passed two integers. The operation is done \emph{in-place} when
587 \var{o1} supports it.
588 \versionadded{2.2}
589\end{cfuncdesc}
590
591
592\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceRemainder}{PyObject *o1,
593 PyObject *o2}
594 Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{}
595 on failure. The operation is done \emph{in-place} when \var{o1}
596 supports it. This is the equivalent of the Python statement
597 \samp{\var{o1} \%= \var{o2}}.
598\end{cfuncdesc}
599
600
601\begin{cfuncdesc}{PyObject*}{PyNumber_InPlacePower}{PyObject *o1,
602 PyObject *o2, PyObject *o3}
603 See the built-in function \function{pow()}.\bifuncindex{pow}
604 Returns \NULL{} on failure. The operation is done \emph{in-place}
605 when \var{o1} supports it. This is the equivalent of the Python
606 statement \samp{\var{o1} **= \var{o2}} when o3 is \cdata{Py_None},
607 or an in-place variant of \samp{pow(\var{o1}, \var{o2}, \var{o3})}
608 otherwise. If \var{o3} is to be ignored, pass \cdata{Py_None} in its
609 place (passing \NULL{} for \var{o3} would cause an illegal memory
610 access).
611\end{cfuncdesc}
612
613\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceLshift}{PyObject *o1,
614 PyObject *o2}
615 Returns the result of left shifting \var{o1} by \var{o2} on success,
616 or \NULL{} on failure. The operation is done \emph{in-place} when
617 \var{o1} supports it. This is the equivalent of the Python
618 statement \samp{\var{o1} <\code{<=} \var{o2}}.
619\end{cfuncdesc}
620
621
622\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceRshift}{PyObject *o1,
623 PyObject *o2}
624 Returns the result of right shifting \var{o1} by \var{o2} on
625 success, or \NULL{} on failure. The operation is done
626 \emph{in-place} when \var{o1} supports it. This is the equivalent
627 of the Python statement \samp{\var{o1} >\code{>=} \var{o2}}.
628\end{cfuncdesc}
629
630
631\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceAnd}{PyObject *o1, PyObject *o2}
632 Returns the ``bitwise and'' of \var{o1} and \var{o2} on success and
633 \NULL{} on failure. The operation is done \emph{in-place} when
634 \var{o1} supports it. This is the equivalent of the Python
635 statement \samp{\var{o1} \&= \var{o2}}.
636\end{cfuncdesc}
637
638
639\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceXor}{PyObject *o1, PyObject *o2}
640 Returns the ``bitwise exclusive or'' of \var{o1} by \var{o2} on
641 success, or \NULL{} on failure. The operation is done
642 \emph{in-place} when \var{o1} supports it. This is the equivalent
643 of the Python statement \samp{\var{o1} \textasciicircum= \var{o2}}.
644\end{cfuncdesc}
645
646\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceOr}{PyObject *o1, PyObject *o2}
647 Returns the ``bitwise or'' of \var{o1} and \var{o2} on success, or
648 \NULL{} on failure. The operation is done \emph{in-place} when
649 \var{o1} supports it. This is the equivalent of the Python
650 statement \samp{\var{o1} |= \var{o2}}.
651\end{cfuncdesc}
652
653\begin{cfuncdesc}{int}{PyNumber_Coerce}{PyObject **p1, PyObject **p2}
654 This function takes the addresses of two variables of type
655 \ctype{PyObject*}. If the objects pointed to by \code{*\var{p1}}
656 and \code{*\var{p2}} have the same type, increment their reference
657 count and return \code{0} (success). If the objects can be converted
658 to a common numeric type, replace \code{*p1} and \code{*p2} by their
659 converted value (with 'new' reference counts), and return \code{0}.
660 If no conversion is possible, or if some other error occurs, return
661 \code{-1} (failure) and don't increment the reference counts. The
662 call \code{PyNumber_Coerce(\&o1, \&o2)} is equivalent to the Python
663 statement \samp{\var{o1}, \var{o2} = coerce(\var{o1}, \var{o2})}.
664 \bifuncindex{coerce}
665\end{cfuncdesc}
666
667\begin{cfuncdesc}{PyObject*}{PyNumber_Int}{PyObject *o}
668 Returns the \var{o} converted to an integer object on success, or
Walter Dörwaldf1715402002-11-19 20:49:15 +0000669 \NULL{} on failure. If the argument is outside the integer range
670 a long object will be returned instead. This is the equivalent
671 of the Python expression \samp{int(\var{o})}.\bifuncindex{int}
Fred Drake3adf79e2001-10-12 19:01:43 +0000672\end{cfuncdesc}
673
674\begin{cfuncdesc}{PyObject*}{PyNumber_Long}{PyObject *o}
675 Returns the \var{o} converted to a long integer object on success,
676 or \NULL{} on failure. This is the equivalent of the Python
677 expression \samp{long(\var{o})}.\bifuncindex{long}
678\end{cfuncdesc}
679
680\begin{cfuncdesc}{PyObject*}{PyNumber_Float}{PyObject *o}
681 Returns the \var{o} converted to a float object on success, or
682 \NULL{} on failure. This is the equivalent of the Python expression
683 \samp{float(\var{o})}.\bifuncindex{float}
684\end{cfuncdesc}
685
Guido van Rossum38fff8c2006-03-07 18:50:55 +0000686\begin{cfuncdesc}{Py_ssize_t}{PyNumber_Index}{PyObject *o}
687 Returns the \var{o} converted to a Py_ssize_t integer on success, or
688 -1 with an exception raised on failure.
Neal Norwitz025f14b2006-03-08 05:29:18 +0000689 \versionadded{2.5}
Guido van Rossum38fff8c2006-03-07 18:50:55 +0000690\end{cfuncdesc}
Fred Drake3adf79e2001-10-12 19:01:43 +0000691
692\section{Sequence Protocol \label{sequence}}
693
694\begin{cfuncdesc}{int}{PySequence_Check}{PyObject *o}
695 Return \code{1} if the object provides sequence protocol, and
696 \code{0} otherwise. This function always succeeds.
697\end{cfuncdesc}
698
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000699\begin{cfuncdesc}{Py_ssize_t}{PySequence_Size}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000700 Returns the number of objects in sequence \var{o} on success, and
701 \code{-1} on failure. For objects that do not provide sequence
702 protocol, this is equivalent to the Python expression
703 \samp{len(\var{o})}.\bifuncindex{len}
704\end{cfuncdesc}
705
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000706\begin{cfuncdesc}{Py_ssize_t}{PySequence_Length}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000707 Alternate name for \cfunction{PySequence_Size()}.
708\end{cfuncdesc}
709
710\begin{cfuncdesc}{PyObject*}{PySequence_Concat}{PyObject *o1, PyObject *o2}
711 Return the concatenation of \var{o1} and \var{o2} on success, and
712 \NULL{} on failure. This is the equivalent of the Python
713 expression \samp{\var{o1} + \var{o2}}.
714\end{cfuncdesc}
715
716
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000717\begin{cfuncdesc}{PyObject*}{PySequence_Repeat}{PyObject *o, Py_ssize_t count}
Fred Drake3adf79e2001-10-12 19:01:43 +0000718 Return the result of repeating sequence object \var{o} \var{count}
719 times, or \NULL{} on failure. This is the equivalent of the Python
720 expression \samp{\var{o} * \var{count}}.
721\end{cfuncdesc}
722
723\begin{cfuncdesc}{PyObject*}{PySequence_InPlaceConcat}{PyObject *o1,
724 PyObject *o2}
725 Return the concatenation of \var{o1} and \var{o2} on success, and
726 \NULL{} on failure. The operation is done \emph{in-place} when
727 \var{o1} supports it. This is the equivalent of the Python
728 expression \samp{\var{o1} += \var{o2}}.
729\end{cfuncdesc}
730
731
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000732\begin{cfuncdesc}{PyObject*}{PySequence_InPlaceRepeat}{PyObject *o, Py_ssize_t count}
Fred Drake3adf79e2001-10-12 19:01:43 +0000733 Return the result of repeating sequence object \var{o} \var{count}
734 times, or \NULL{} on failure. The operation is done \emph{in-place}
735 when \var{o} supports it. This is the equivalent of the Python
736 expression \samp{\var{o} *= \var{count}}.
737\end{cfuncdesc}
738
739
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000740\begin{cfuncdesc}{PyObject*}{PySequence_GetItem}{PyObject *o, Py_ssize_t i}
Fred Drake3adf79e2001-10-12 19:01:43 +0000741 Return the \var{i}th element of \var{o}, or \NULL{} on failure.
742 This is the equivalent of the Python expression
743 \samp{\var{o}[\var{i}]}.
744\end{cfuncdesc}
745
746
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000747\begin{cfuncdesc}{PyObject*}{PySequence_GetSlice}{PyObject *o, Py_ssize_t i1, Py_ssize_t i2}
Fred Drake3adf79e2001-10-12 19:01:43 +0000748 Return the slice of sequence object \var{o} between \var{i1} and
749 \var{i2}, or \NULL{} on failure. This is the equivalent of the
750 Python expression \samp{\var{o}[\var{i1}:\var{i2}]}.
751\end{cfuncdesc}
752
753
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000754\begin{cfuncdesc}{int}{PySequence_SetItem}{PyObject *o, Py_ssize_t i, PyObject *v}
Fred Drake3adf79e2001-10-12 19:01:43 +0000755 Assign object \var{v} to the \var{i}th element of \var{o}. Returns
756 \code{-1} on failure. This is the equivalent of the Python
Raymond Hettinger12c484d2003-08-09 04:37:14 +0000757 statement \samp{\var{o}[\var{i}] = \var{v}}. This function \emph{does not}
758 steal a reference to \var{v}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000759\end{cfuncdesc}
760
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000761\begin{cfuncdesc}{int}{PySequence_DelItem}{PyObject *o, Py_ssize_t i}
Fred Drake3adf79e2001-10-12 19:01:43 +0000762 Delete the \var{i}th element of object \var{o}. Returns \code{-1}
763 on failure. This is the equivalent of the Python statement
764 \samp{del \var{o}[\var{i}]}.
765\end{cfuncdesc}
766
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000767\begin{cfuncdesc}{int}{PySequence_SetSlice}{PyObject *o, Py_ssize_t i1,
768 Py_ssize_t i2, PyObject *v}
Fred Drake3adf79e2001-10-12 19:01:43 +0000769 Assign the sequence object \var{v} to the slice in sequence object
770 \var{o} from \var{i1} to \var{i2}. This is the equivalent of the
771 Python statement \samp{\var{o}[\var{i1}:\var{i2}] = \var{v}}.
772\end{cfuncdesc}
773
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000774\begin{cfuncdesc}{int}{PySequence_DelSlice}{PyObject *o, Py_ssize_t i1, Py_ssize_t i2}
Fred Drake3adf79e2001-10-12 19:01:43 +0000775 Delete the slice in sequence object \var{o} from \var{i1} to
776 \var{i2}. Returns \code{-1} on failure. This is the equivalent of
777 the Python statement \samp{del \var{o}[\var{i1}:\var{i2}]}.
778\end{cfuncdesc}
779
Fred Drake3adf79e2001-10-12 19:01:43 +0000780\begin{cfuncdesc}{int}{PySequence_Count}{PyObject *o, PyObject *value}
781 Return the number of occurrences of \var{value} in \var{o}, that is,
782 return the number of keys for which \code{\var{o}[\var{key}] ==
783 \var{value}}. On failure, return \code{-1}. This is equivalent to
784 the Python expression \samp{\var{o}.count(\var{value})}.
785\end{cfuncdesc}
786
787\begin{cfuncdesc}{int}{PySequence_Contains}{PyObject *o, PyObject *value}
788 Determine if \var{o} contains \var{value}. If an item in \var{o} is
789 equal to \var{value}, return \code{1}, otherwise return \code{0}.
790 On error, return \code{-1}. This is equivalent to the Python
791 expression \samp{\var{value} in \var{o}}.
792\end{cfuncdesc}
793
794\begin{cfuncdesc}{int}{PySequence_Index}{PyObject *o, PyObject *value}
795 Return the first index \var{i} for which \code{\var{o}[\var{i}] ==
796 \var{value}}. On error, return \code{-1}. This is equivalent to
797 the Python expression \samp{\var{o}.index(\var{value})}.
798\end{cfuncdesc}
799
800\begin{cfuncdesc}{PyObject*}{PySequence_List}{PyObject *o}
801 Return a list object with the same contents as the arbitrary
802 sequence \var{o}. The returned list is guaranteed to be new.
803\end{cfuncdesc}
804
805\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
806 Return a tuple object with the same contents as the arbitrary
Neal Norwitz98fcaaf2005-10-12 03:58:14 +0000807 sequence \var{o} or \NULL{} on failure. If \var{o} is a tuple,
808 a new reference will be returned, otherwise a tuple will be
809 constructed with the appropriate contents. This is equivalent
810 to the Python expression \samp{tuple(\var{o})}.
811 \bifuncindex{tuple}
Fred Drake3adf79e2001-10-12 19:01:43 +0000812\end{cfuncdesc}
813
814\begin{cfuncdesc}{PyObject*}{PySequence_Fast}{PyObject *o, const char *m}
815 Returns the sequence \var{o} as a tuple, unless it is already a
816 tuple or list, in which case \var{o} is returned. Use
817 \cfunction{PySequence_Fast_GET_ITEM()} to access the members of the
818 result. Returns \NULL{} on failure. If the object is not a
819 sequence, raises \exception{TypeError} with \var{m} as the message
820 text.
821\end{cfuncdesc}
822
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000823\begin{cfuncdesc}{PyObject*}{PySequence_Fast_GET_ITEM}{PyObject *o, Py_ssize_t i}
Fred Drake3adf79e2001-10-12 19:01:43 +0000824 Return the \var{i}th element of \var{o}, assuming that \var{o} was
Fred Drakec37b65e2001-11-28 07:26:15 +0000825 returned by \cfunction{PySequence_Fast()}, \var{o} is not \NULL,
Tim Peters1fc240e2001-10-26 05:06:50 +0000826 and that \var{i} is within bounds.
827\end{cfuncdesc}
828
Raymond Hettingerc1e4f9d2004-03-12 08:04:00 +0000829\begin{cfuncdesc}{PyObject**}{PySequence_Fast_ITEMS}{PyObject *o}
830 Return the underlying array of PyObject pointers. Assumes that
831 \var{o} was returned by \cfunction{PySequence_Fast()} and
832 \var{o} is not \NULL.
833 \versionadded{2.4}
834\end{cfuncdesc}
835
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000836\begin{cfuncdesc}{PyObject*}{PySequence_ITEM}{PyObject *o, Py_ssize_t i}
Brett Cannon77e02122003-09-07 02:22:16 +0000837 Return the \var{i}th element of \var{o} or \NULL{} on failure.
Martin v. Löwis01f94bd2002-05-08 08:44:21 +0000838 Macro form of \cfunction{PySequence_GetItem()} but without checking
839 that \cfunction{PySequence_Check(\var{o})} is true and without
Fred Drake86228e42002-05-23 16:02:28 +0000840 adjustment for negative indices.
841 \versionadded{2.3}
Martin v. Löwis01f94bd2002-05-08 08:44:21 +0000842\end{cfuncdesc}
843
Tim Peters1fc240e2001-10-26 05:06:50 +0000844\begin{cfuncdesc}{int}{PySequence_Fast_GET_SIZE}{PyObject *o}
845 Returns the length of \var{o}, assuming that \var{o} was
846 returned by \cfunction{PySequence_Fast()} and that \var{o} is
Fred Drakec37b65e2001-11-28 07:26:15 +0000847 not \NULL. The size can also be gotten by calling
Tim Peters1fc240e2001-10-26 05:06:50 +0000848 \cfunction{PySequence_Size()} on \var{o}, but
849 \cfunction{PySequence_Fast_GET_SIZE()} is faster because it can
850 assume \var{o} is a list or tuple.
Fred Drake3adf79e2001-10-12 19:01:43 +0000851\end{cfuncdesc}
852
853
854\section{Mapping Protocol \label{mapping}}
855
856\begin{cfuncdesc}{int}{PyMapping_Check}{PyObject *o}
857 Return \code{1} if the object provides mapping protocol, and
858 \code{0} otherwise. This function always succeeds.
859\end{cfuncdesc}
860
861
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000862\begin{cfuncdesc}{Py_ssize_t}{PyMapping_Length}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000863 Returns the number of keys in object \var{o} on success, and
864 \code{-1} on failure. For objects that do not provide mapping
865 protocol, this is equivalent to the Python expression
866 \samp{len(\var{o})}.\bifuncindex{len}
867\end{cfuncdesc}
868
869
870\begin{cfuncdesc}{int}{PyMapping_DelItemString}{PyObject *o, char *key}
871 Remove the mapping for object \var{key} from the object \var{o}.
872 Return \code{-1} on failure. This is equivalent to the Python
873 statement \samp{del \var{o}[\var{key}]}.
874\end{cfuncdesc}
875
876
877\begin{cfuncdesc}{int}{PyMapping_DelItem}{PyObject *o, PyObject *key}
878 Remove the mapping for object \var{key} from the object \var{o}.
879 Return \code{-1} on failure. This is equivalent to the Python
880 statement \samp{del \var{o}[\var{key}]}.
881\end{cfuncdesc}
882
883
884\begin{cfuncdesc}{int}{PyMapping_HasKeyString}{PyObject *o, char *key}
885 On success, return \code{1} if the mapping object has the key
886 \var{key} and \code{0} otherwise. This is equivalent to the Python
887 expression \samp{\var{o}.has_key(\var{key})}. This function always
888 succeeds.
889\end{cfuncdesc}
890
891
892\begin{cfuncdesc}{int}{PyMapping_HasKey}{PyObject *o, PyObject *key}
893 Return \code{1} if the mapping object has the key \var{key} and
894 \code{0} otherwise. This is equivalent to the Python expression
895 \samp{\var{o}.has_key(\var{key})}. This function always succeeds.
896\end{cfuncdesc}
897
898
899\begin{cfuncdesc}{PyObject*}{PyMapping_Keys}{PyObject *o}
900 On success, return a list of the keys in object \var{o}. On
901 failure, return \NULL. This is equivalent to the Python expression
902 \samp{\var{o}.keys()}.
903\end{cfuncdesc}
904
905
906\begin{cfuncdesc}{PyObject*}{PyMapping_Values}{PyObject *o}
907 On success, return a list of the values in object \var{o}. On
908 failure, return \NULL. This is equivalent to the Python expression
909 \samp{\var{o}.values()}.
910\end{cfuncdesc}
911
912
913\begin{cfuncdesc}{PyObject*}{PyMapping_Items}{PyObject *o}
914 On success, return a list of the items in object \var{o}, where each
915 item is a tuple containing a key-value pair. On failure, return
916 \NULL. This is equivalent to the Python expression
917 \samp{\var{o}.items()}.
918\end{cfuncdesc}
919
920
921\begin{cfuncdesc}{PyObject*}{PyMapping_GetItemString}{PyObject *o, char *key}
922 Return element of \var{o} corresponding to the object \var{key} or
923 \NULL{} on failure. This is the equivalent of the Python expression
924 \samp{\var{o}[\var{key}]}.
925\end{cfuncdesc}
926
927\begin{cfuncdesc}{int}{PyMapping_SetItemString}{PyObject *o, char *key,
928 PyObject *v}
929 Map the object \var{key} to the value \var{v} in object \var{o}.
930 Returns \code{-1} on failure. This is the equivalent of the Python
931 statement \samp{\var{o}[\var{key}] = \var{v}}.
932\end{cfuncdesc}
933
934
935\section{Iterator Protocol \label{iterator}}
936
937\versionadded{2.2}
938
939There are only a couple of functions specifically for working with
940iterators.
941
942\begin{cfuncdesc}{int}{PyIter_Check}{PyObject *o}
943 Return true if the object \var{o} supports the iterator protocol.
944\end{cfuncdesc}
945
946\begin{cfuncdesc}{PyObject*}{PyIter_Next}{PyObject *o}
947 Return the next value from the iteration \var{o}. If the object is
948 an iterator, this retrieves the next value from the iteration, and
949 returns \NULL{} with no exception set if there are no remaining
950 items. If the object is not an iterator, \exception{TypeError} is
951 raised, or if there is an error in retrieving the item, returns
952 \NULL{} and passes along the exception.
953\end{cfuncdesc}
954
955To write a loop which iterates over an iterator, the C code should
956look something like this:
957
958\begin{verbatim}
Fred Drake314bae52002-03-11 18:46:29 +0000959PyObject *iterator = PyObject_GetIter(obj);
Fred Drake3adf79e2001-10-12 19:01:43 +0000960PyObject *item;
961
Fred Drake314bae52002-03-11 18:46:29 +0000962if (iterator == NULL) {
963 /* propagate error */
964}
965
966while (item = PyIter_Next(iterator)) {
Fred Drake3adf79e2001-10-12 19:01:43 +0000967 /* do something with item */
Fred Drake8b8fe282001-12-26 16:53:48 +0000968 ...
969 /* release reference when done */
970 Py_DECREF(item);
Fred Drake3adf79e2001-10-12 19:01:43 +0000971}
Fred Drake314bae52002-03-11 18:46:29 +0000972
973Py_DECREF(iterator);
974
Fred Drake3adf79e2001-10-12 19:01:43 +0000975if (PyErr_Occurred()) {
Fred Drake314bae52002-03-11 18:46:29 +0000976 /* propagate error */
Fred Drake3adf79e2001-10-12 19:01:43 +0000977}
978else {
979 /* continue doing useful work */
980}
Fred Drake8b8fe282001-12-26 16:53:48 +0000981\end{verbatim}
982
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000983
Fred Drake94ead572001-11-09 23:34:26 +0000984\section{Buffer Protocol \label{abstract-buffer}}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000985
986\begin{cfuncdesc}{int}{PyObject_AsCharBuffer}{PyObject *obj,
Fred Drake94ead572001-11-09 23:34:26 +0000987 const char **buffer,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000988 Py_ssize_t *buffer_len}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000989 Returns a pointer to a read-only memory location useable as character-
990 based input. The \var{obj} argument must support the single-segment
Fred Drake243ea712002-04-04 04:10:36 +0000991 character buffer interface. On success, returns \code{0}, sets
Thomas Hellerbfeeeee2001-11-12 07:46:31 +0000992 \var{buffer} to the memory location and \var{buffer_len} to the buffer
Fred Drake243ea712002-04-04 04:10:36 +0000993 length. Returns \code{-1} and sets a \exception{TypeError} on error.
Fred Drake94ead572001-11-09 23:34:26 +0000994 \versionadded{1.6}
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000995\end{cfuncdesc}
996
997\begin{cfuncdesc}{int}{PyObject_AsReadBuffer}{PyObject *obj,
Andrew M. Kuchlingee5e4cd2004-07-07 13:07:47 +0000998 const void **buffer,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000999 Py_ssize_t *buffer_len}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001000 Returns a pointer to a read-only memory location containing
1001 arbitrary data. The \var{obj} argument must support the
1002 single-segment readable buffer interface. On success, returns
Fred Drake243ea712002-04-04 04:10:36 +00001003 \code{0}, sets \var{buffer} to the memory location and \var{buffer_len}
1004 to the buffer length. Returns \code{-1} and sets a
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001005 \exception{TypeError} on error.
Fred Drake94ead572001-11-09 23:34:26 +00001006 \versionadded{1.6}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001007\end{cfuncdesc}
1008
1009\begin{cfuncdesc}{int}{PyObject_CheckReadBuffer}{PyObject *o}
1010 Returns \code{1} if \var{o} supports the single-segment readable
1011 buffer interface. Otherwise returns \code{0}.
Fred Drake94ead572001-11-09 23:34:26 +00001012 \versionadded{2.2}
Fred Drake8b8fe282001-12-26 16:53:48 +00001013\end{cfuncdesc}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001014
1015\begin{cfuncdesc}{int}{PyObject_AsWriteBuffer}{PyObject *obj,
Andrew M. Kuchlingee5e4cd2004-07-07 13:07:47 +00001016 void **buffer,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001017 Py_ssize_t *buffer_len}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001018 Returns a pointer to a writeable memory location. The \var{obj}
1019 argument must support the single-segment, character buffer
Fred Drake243ea712002-04-04 04:10:36 +00001020 interface. On success, returns \code{0}, sets \var{buffer} to the
Thomas Hellerbfeeeee2001-11-12 07:46:31 +00001021 memory location and \var{buffer_len} to the buffer length. Returns
Fred Drake243ea712002-04-04 04:10:36 +00001022 \code{-1} and sets a \exception{TypeError} on error.
Fred Drake94ead572001-11-09 23:34:26 +00001023 \versionadded{1.6}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001024\end{cfuncdesc}