Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/python3.8/abstract.h @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 69:33d812a61356 |
---|---|
1 /* Abstract Object Interface (many thanks to Jim Fulton) */ | |
2 | |
3 #ifndef Py_ABSTRACTOBJECT_H | |
4 #define Py_ABSTRACTOBJECT_H | |
5 #ifdef __cplusplus | |
6 extern "C" { | |
7 #endif | |
8 | |
9 /* === Object Protocol ================================================== */ | |
10 | |
11 /* Implemented elsewhere: | |
12 | |
13 int PyObject_Print(PyObject *o, FILE *fp, int flags); | |
14 | |
15 Print an object 'o' on file 'fp'. Returns -1 on error. The flags argument | |
16 is used to enable certain printing options. The only option currently | |
17 supported is Py_Print_RAW. | |
18 | |
19 (What should be said about Py_Print_RAW?). */ | |
20 | |
21 | |
22 /* Implemented elsewhere: | |
23 | |
24 int PyObject_HasAttrString(PyObject *o, const char *attr_name); | |
25 | |
26 Returns 1 if object 'o' has the attribute attr_name, and 0 otherwise. | |
27 | |
28 This is equivalent to the Python expression: hasattr(o,attr_name). | |
29 | |
30 This function always succeeds. */ | |
31 | |
32 | |
33 /* Implemented elsewhere: | |
34 | |
35 PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name); | |
36 | |
37 Retrieve an attributed named attr_name form object o. | |
38 Returns the attribute value on success, or NULL on failure. | |
39 | |
40 This is the equivalent of the Python expression: o.attr_name. */ | |
41 | |
42 | |
43 /* Implemented elsewhere: | |
44 | |
45 int PyObject_HasAttr(PyObject *o, PyObject *attr_name); | |
46 | |
47 Returns 1 if o has the attribute attr_name, and 0 otherwise. | |
48 | |
49 This is equivalent to the Python expression: hasattr(o,attr_name). | |
50 | |
51 This function always succeeds. */ | |
52 | |
53 /* Implemented elsewhere: | |
54 | |
55 PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name); | |
56 | |
57 Retrieve an attributed named 'attr_name' form object 'o'. | |
58 Returns the attribute value on success, or NULL on failure. | |
59 | |
60 This is the equivalent of the Python expression: o.attr_name. */ | |
61 | |
62 | |
63 /* Implemented elsewhere: | |
64 | |
65 int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v); | |
66 | |
67 Set the value of the attribute named attr_name, for object 'o', | |
68 to the value 'v'. Raise an exception and return -1 on failure; return 0 on | |
69 success. | |
70 | |
71 This is the equivalent of the Python statement o.attr_name=v. */ | |
72 | |
73 | |
74 /* Implemented elsewhere: | |
75 | |
76 int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v); | |
77 | |
78 Set the value of the attribute named attr_name, for object 'o', to the value | |
79 'v'. an exception and return -1 on failure; return 0 on success. | |
80 | |
81 This is the equivalent of the Python statement o.attr_name=v. */ | |
82 | |
83 /* Implemented as a macro: | |
84 | |
85 int PyObject_DelAttrString(PyObject *o, const char *attr_name); | |
86 | |
87 Delete attribute named attr_name, for object o. Returns | |
88 -1 on failure. | |
89 | |
90 This is the equivalent of the Python statement: del o.attr_name. */ | |
91 #define PyObject_DelAttrString(O,A) PyObject_SetAttrString((O),(A), NULL) | |
92 | |
93 | |
94 /* Implemented as a macro: | |
95 | |
96 int PyObject_DelAttr(PyObject *o, PyObject *attr_name); | |
97 | |
98 Delete attribute named attr_name, for object o. Returns -1 | |
99 on failure. This is the equivalent of the Python | |
100 statement: del o.attr_name. */ | |
101 #define PyObject_DelAttr(O,A) PyObject_SetAttr((O),(A), NULL) | |
102 | |
103 | |
104 /* Implemented elsewhere: | |
105 | |
106 PyObject *PyObject_Repr(PyObject *o); | |
107 | |
108 Compute the string representation of object 'o'. Returns the | |
109 string representation on success, NULL on failure. | |
110 | |
111 This is the equivalent of the Python expression: repr(o). | |
112 | |
113 Called by the repr() built-in function. */ | |
114 | |
115 | |
116 /* Implemented elsewhere: | |
117 | |
118 PyObject *PyObject_Str(PyObject *o); | |
119 | |
120 Compute the string representation of object, o. Returns the | |
121 string representation on success, NULL on failure. | |
122 | |
123 This is the equivalent of the Python expression: str(o). | |
124 | |
125 Called by the str() and print() built-in functions. */ | |
126 | |
127 | |
128 /* Declared elsewhere | |
129 | |
130 PyAPI_FUNC(int) PyCallable_Check(PyObject *o); | |
131 | |
132 Determine if the object, o, is callable. Return 1 if the object is callable | |
133 and 0 otherwise. | |
134 | |
135 This function always succeeds. */ | |
136 | |
137 | |
138 #ifdef PY_SSIZE_T_CLEAN | |
139 # define PyObject_CallFunction _PyObject_CallFunction_SizeT | |
140 # define PyObject_CallMethod _PyObject_CallMethod_SizeT | |
141 #endif | |
142 | |
143 | |
144 /* Call a callable Python object 'callable' with arguments given by the | |
145 tuple 'args' and keywords arguments given by the dictionary 'kwargs'. | |
146 | |
147 'args' must not be NULL, use an empty tuple if no arguments are | |
148 needed. If no named arguments are needed, 'kwargs' can be NULL. | |
149 | |
150 This is the equivalent of the Python expression: | |
151 callable(*args, **kwargs). */ | |
152 PyAPI_FUNC(PyObject *) PyObject_Call(PyObject *callable, | |
153 PyObject *args, PyObject *kwargs); | |
154 | |
155 | |
156 /* Call a callable Python object 'callable', with arguments given by the | |
157 tuple 'args'. If no arguments are needed, then 'args' can be NULL. | |
158 | |
159 Returns the result of the call on success, or NULL on failure. | |
160 | |
161 This is the equivalent of the Python expression: | |
162 callable(*args). */ | |
163 PyAPI_FUNC(PyObject *) PyObject_CallObject(PyObject *callable, | |
164 PyObject *args); | |
165 | |
166 /* Call a callable Python object, callable, with a variable number of C | |
167 arguments. The C arguments are described using a mkvalue-style format | |
168 string. | |
169 | |
170 The format may be NULL, indicating that no arguments are provided. | |
171 | |
172 Returns the result of the call on success, or NULL on failure. | |
173 | |
174 This is the equivalent of the Python expression: | |
175 callable(arg1, arg2, ...). */ | |
176 PyAPI_FUNC(PyObject *) PyObject_CallFunction(PyObject *callable, | |
177 const char *format, ...); | |
178 | |
179 /* Call the method named 'name' of object 'obj' with a variable number of | |
180 C arguments. The C arguments are described by a mkvalue format string. | |
181 | |
182 The format can be NULL, indicating that no arguments are provided. | |
183 | |
184 Returns the result of the call on success, or NULL on failure. | |
185 | |
186 This is the equivalent of the Python expression: | |
187 obj.name(arg1, arg2, ...). */ | |
188 PyAPI_FUNC(PyObject *) PyObject_CallMethod(PyObject *obj, | |
189 const char *name, | |
190 const char *format, ...); | |
191 | |
192 PyAPI_FUNC(PyObject *) _PyObject_CallFunction_SizeT(PyObject *callable, | |
193 const char *format, | |
194 ...); | |
195 | |
196 PyAPI_FUNC(PyObject *) _PyObject_CallMethod_SizeT(PyObject *obj, | |
197 const char *name, | |
198 const char *format, | |
199 ...); | |
200 | |
201 /* Call a callable Python object 'callable' with a variable number of C | |
202 arguments. The C arguments are provided as PyObject* values, terminated | |
203 by a NULL. | |
204 | |
205 Returns the result of the call on success, or NULL on failure. | |
206 | |
207 This is the equivalent of the Python expression: | |
208 callable(arg1, arg2, ...). */ | |
209 PyAPI_FUNC(PyObject *) PyObject_CallFunctionObjArgs(PyObject *callable, | |
210 ...); | |
211 | |
212 /* Call the method named 'name' of object 'obj' with a variable number of | |
213 C arguments. The C arguments are provided as PyObject* values, terminated | |
214 by NULL. | |
215 | |
216 Returns the result of the call on success, or NULL on failure. | |
217 | |
218 This is the equivalent of the Python expression: obj.name(*args). */ | |
219 | |
220 PyAPI_FUNC(PyObject *) PyObject_CallMethodObjArgs( | |
221 PyObject *obj, | |
222 PyObject *name, | |
223 ...); | |
224 | |
225 | |
226 /* Implemented elsewhere: | |
227 | |
228 Py_hash_t PyObject_Hash(PyObject *o); | |
229 | |
230 Compute and return the hash, hash_value, of an object, o. On | |
231 failure, return -1. | |
232 | |
233 This is the equivalent of the Python expression: hash(o). */ | |
234 | |
235 | |
236 /* Implemented elsewhere: | |
237 | |
238 int PyObject_IsTrue(PyObject *o); | |
239 | |
240 Returns 1 if the object, o, is considered to be true, 0 if o is | |
241 considered to be false and -1 on failure. | |
242 | |
243 This is equivalent to the Python expression: not not o. */ | |
244 | |
245 | |
246 /* Implemented elsewhere: | |
247 | |
248 int PyObject_Not(PyObject *o); | |
249 | |
250 Returns 0 if the object, o, is considered to be true, 1 if o is | |
251 considered to be false and -1 on failure. | |
252 | |
253 This is equivalent to the Python expression: not o. */ | |
254 | |
255 | |
256 /* Get the type of an object. | |
257 | |
258 On success, returns a type object corresponding to the object type of object | |
259 'o'. On failure, returns NULL. | |
260 | |
261 This is equivalent to the Python expression: type(o) */ | |
262 PyAPI_FUNC(PyObject *) PyObject_Type(PyObject *o); | |
263 | |
264 | |
265 /* Return the size of object 'o'. If the object 'o' provides both sequence and | |
266 mapping protocols, the sequence size is returned. | |
267 | |
268 On error, -1 is returned. | |
269 | |
270 This is the equivalent to the Python expression: len(o) */ | |
271 PyAPI_FUNC(Py_ssize_t) PyObject_Size(PyObject *o); | |
272 | |
273 | |
274 /* For DLL compatibility */ | |
275 #undef PyObject_Length | |
276 PyAPI_FUNC(Py_ssize_t) PyObject_Length(PyObject *o); | |
277 #define PyObject_Length PyObject_Size | |
278 | |
279 /* Return element of 'o' corresponding to the object 'key'. Return NULL | |
280 on failure. | |
281 | |
282 This is the equivalent of the Python expression: o[key] */ | |
283 PyAPI_FUNC(PyObject *) PyObject_GetItem(PyObject *o, PyObject *key); | |
284 | |
285 | |
286 /* Map the object 'key' to the value 'v' into 'o'. | |
287 | |
288 Raise an exception and return -1 on failure; return 0 on success. | |
289 | |
290 This is the equivalent of the Python statement: o[key]=v. */ | |
291 PyAPI_FUNC(int) PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v); | |
292 | |
293 /* Remove the mapping for the string 'key' from the object 'o'. | |
294 Returns -1 on failure. | |
295 | |
296 This is equivalent to the Python statement: del o[key]. */ | |
297 PyAPI_FUNC(int) PyObject_DelItemString(PyObject *o, const char *key); | |
298 | |
299 /* Delete the mapping for the object 'key' from the object 'o'. | |
300 Returns -1 on failure. | |
301 | |
302 This is the equivalent of the Python statement: del o[key]. */ | |
303 PyAPI_FUNC(int) PyObject_DelItem(PyObject *o, PyObject *key); | |
304 | |
305 | |
306 /* === Old Buffer API ============================================ */ | |
307 | |
308 /* FIXME: usage of these should all be replaced in Python itself | |
309 but for backwards compatibility we will implement them. | |
310 Their usage without a corresponding "unlock" mechanism | |
311 may create issues (but they would already be there). */ | |
312 | |
313 /* Takes an arbitrary object which must support the (character, single segment) | |
314 buffer interface and returns a pointer to a read-only memory location | |
315 useable as character based input for subsequent processing. | |
316 | |
317 Return 0 on success. buffer and buffer_len are only set in case no error | |
318 occurs. Otherwise, -1 is returned and an exception set. */ | |
319 Py_DEPRECATED(3.0) | |
320 PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj, | |
321 const char **buffer, | |
322 Py_ssize_t *buffer_len); | |
323 | |
324 /* Checks whether an arbitrary object supports the (character, single segment) | |
325 buffer interface. | |
326 | |
327 Returns 1 on success, 0 on failure. */ | |
328 Py_DEPRECATED(3.0) PyAPI_FUNC(int) PyObject_CheckReadBuffer(PyObject *obj); | |
329 | |
330 /* Same as PyObject_AsCharBuffer() except that this API expects (readable, | |
331 single segment) buffer interface and returns a pointer to a read-only memory | |
332 location which can contain arbitrary data. | |
333 | |
334 0 is returned on success. buffer and buffer_len are only set in case no | |
335 error occurs. Otherwise, -1 is returned and an exception set. */ | |
336 Py_DEPRECATED(3.0) | |
337 PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj, | |
338 const void **buffer, | |
339 Py_ssize_t *buffer_len); | |
340 | |
341 /* Takes an arbitrary object which must support the (writable, single segment) | |
342 buffer interface and returns a pointer to a writable memory location in | |
343 buffer of size 'buffer_len'. | |
344 | |
345 Return 0 on success. buffer and buffer_len are only set in case no error | |
346 occurs. Otherwise, -1 is returned and an exception set. */ | |
347 Py_DEPRECATED(3.0) | |
348 PyAPI_FUNC(int) PyObject_AsWriteBuffer(PyObject *obj, | |
349 void **buffer, | |
350 Py_ssize_t *buffer_len); | |
351 | |
352 | |
353 /* === New Buffer API ============================================ */ | |
354 | |
355 /* Takes an arbitrary object and returns the result of calling | |
356 obj.__format__(format_spec). */ | |
357 PyAPI_FUNC(PyObject *) PyObject_Format(PyObject *obj, | |
358 PyObject *format_spec); | |
359 | |
360 | |
361 /* ==== Iterators ================================================ */ | |
362 | |
363 /* Takes an object and returns an iterator for it. | |
364 This is typically a new iterator but if the argument is an iterator, this | |
365 returns itself. */ | |
366 PyAPI_FUNC(PyObject *) PyObject_GetIter(PyObject *); | |
367 | |
368 /* Returns 1 if the object 'obj' provides iterator protocols, and 0 otherwise. | |
369 | |
370 This function always succeeds. */ | |
371 PyAPI_FUNC(int) PyIter_Check(PyObject *); | |
372 | |
373 /* Takes an iterator object and calls its tp_iternext slot, | |
374 returning the next value. | |
375 | |
376 If the iterator is exhausted, this returns NULL without setting an | |
377 exception. | |
378 | |
379 NULL with an exception means an error occurred. */ | |
380 PyAPI_FUNC(PyObject *) PyIter_Next(PyObject *); | |
381 | |
382 | |
383 /* === Number Protocol ================================================== */ | |
384 | |
385 /* Returns 1 if the object 'o' provides numeric protocols, and 0 otherwise. | |
386 | |
387 This function always succeeds. */ | |
388 PyAPI_FUNC(int) PyNumber_Check(PyObject *o); | |
389 | |
390 /* Returns the result of adding o1 and o2, or NULL on failure. | |
391 | |
392 This is the equivalent of the Python expression: o1 + o2. */ | |
393 PyAPI_FUNC(PyObject *) PyNumber_Add(PyObject *o1, PyObject *o2); | |
394 | |
395 /* Returns the result of subtracting o2 from o1, or NULL on failure. | |
396 | |
397 This is the equivalent of the Python expression: o1 - o2. */ | |
398 PyAPI_FUNC(PyObject *) PyNumber_Subtract(PyObject *o1, PyObject *o2); | |
399 | |
400 /* Returns the result of multiplying o1 and o2, or NULL on failure. | |
401 | |
402 This is the equivalent of the Python expression: o1 * o2. */ | |
403 PyAPI_FUNC(PyObject *) PyNumber_Multiply(PyObject *o1, PyObject *o2); | |
404 | |
405 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 | |
406 /* This is the equivalent of the Python expression: o1 @ o2. */ | |
407 PyAPI_FUNC(PyObject *) PyNumber_MatrixMultiply(PyObject *o1, PyObject *o2); | |
408 #endif | |
409 | |
410 /* Returns the result of dividing o1 by o2 giving an integral result, | |
411 or NULL on failure. | |
412 | |
413 This is the equivalent of the Python expression: o1 // o2. */ | |
414 PyAPI_FUNC(PyObject *) PyNumber_FloorDivide(PyObject *o1, PyObject *o2); | |
415 | |
416 /* Returns the result of dividing o1 by o2 giving a float result, or NULL on | |
417 failure. | |
418 | |
419 This is the equivalent of the Python expression: o1 / o2. */ | |
420 PyAPI_FUNC(PyObject *) PyNumber_TrueDivide(PyObject *o1, PyObject *o2); | |
421 | |
422 /* Returns the remainder of dividing o1 by o2, or NULL on failure. | |
423 | |
424 This is the equivalent of the Python expression: o1 % o2. */ | |
425 PyAPI_FUNC(PyObject *) PyNumber_Remainder(PyObject *o1, PyObject *o2); | |
426 | |
427 /* See the built-in function divmod. | |
428 | |
429 Returns NULL on failure. | |
430 | |
431 This is the equivalent of the Python expression: divmod(o1, o2). */ | |
432 PyAPI_FUNC(PyObject *) PyNumber_Divmod(PyObject *o1, PyObject *o2); | |
433 | |
434 /* See the built-in function pow. Returns NULL on failure. | |
435 | |
436 This is the equivalent of the Python expression: pow(o1, o2, o3), | |
437 where o3 is optional. */ | |
438 PyAPI_FUNC(PyObject *) PyNumber_Power(PyObject *o1, PyObject *o2, | |
439 PyObject *o3); | |
440 | |
441 /* Returns the negation of o on success, or NULL on failure. | |
442 | |
443 This is the equivalent of the Python expression: -o. */ | |
444 PyAPI_FUNC(PyObject *) PyNumber_Negative(PyObject *o); | |
445 | |
446 /* Returns the positive of o on success, or NULL on failure. | |
447 | |
448 This is the equivalent of the Python expression: +o. */ | |
449 PyAPI_FUNC(PyObject *) PyNumber_Positive(PyObject *o); | |
450 | |
451 /* Returns the absolute value of 'o', or NULL on failure. | |
452 | |
453 This is the equivalent of the Python expression: abs(o). */ | |
454 PyAPI_FUNC(PyObject *) PyNumber_Absolute(PyObject *o); | |
455 | |
456 /* Returns the bitwise negation of 'o' on success, or NULL on failure. | |
457 | |
458 This is the equivalent of the Python expression: ~o. */ | |
459 PyAPI_FUNC(PyObject *) PyNumber_Invert(PyObject *o); | |
460 | |
461 /* Returns the result of left shifting o1 by o2 on success, or NULL on failure. | |
462 | |
463 This is the equivalent of the Python expression: o1 << o2. */ | |
464 PyAPI_FUNC(PyObject *) PyNumber_Lshift(PyObject *o1, PyObject *o2); | |
465 | |
466 /* Returns the result of right shifting o1 by o2 on success, or NULL on | |
467 failure. | |
468 | |
469 This is the equivalent of the Python expression: o1 >> o2. */ | |
470 PyAPI_FUNC(PyObject *) PyNumber_Rshift(PyObject *o1, PyObject *o2); | |
471 | |
472 /* Returns the result of bitwise and of o1 and o2 on success, or NULL on | |
473 failure. | |
474 | |
475 This is the equivalent of the Python expression: o1 & o2. */ | |
476 PyAPI_FUNC(PyObject *) PyNumber_And(PyObject *o1, PyObject *o2); | |
477 | |
478 /* Returns the bitwise exclusive or of o1 by o2 on success, or NULL on failure. | |
479 | |
480 This is the equivalent of the Python expression: o1 ^ o2. */ | |
481 PyAPI_FUNC(PyObject *) PyNumber_Xor(PyObject *o1, PyObject *o2); | |
482 | |
483 /* Returns the result of bitwise or on o1 and o2 on success, or NULL on | |
484 failure. | |
485 | |
486 This is the equivalent of the Python expression: o1 | o2. */ | |
487 PyAPI_FUNC(PyObject *) PyNumber_Or(PyObject *o1, PyObject *o2); | |
488 | |
489 /* Returns 1 if obj is an index integer (has the nb_index slot of the | |
490 tp_as_number structure filled in), and 0 otherwise. */ | |
491 PyAPI_FUNC(int) PyIndex_Check(PyObject *); | |
492 | |
493 /* Returns the object 'o' converted to a Python int, or NULL with an exception | |
494 raised on failure. */ | |
495 PyAPI_FUNC(PyObject *) PyNumber_Index(PyObject *o); | |
496 | |
497 /* Returns the object 'o' converted to Py_ssize_t by going through | |
498 PyNumber_Index() first. | |
499 | |
500 If an overflow error occurs while converting the int to Py_ssize_t, then the | |
501 second argument 'exc' is the error-type to return. If it is NULL, then the | |
502 overflow error is cleared and the value is clipped. */ | |
503 PyAPI_FUNC(Py_ssize_t) PyNumber_AsSsize_t(PyObject *o, PyObject *exc); | |
504 | |
505 /* Returns the object 'o' converted to an integer object on success, or NULL | |
506 on failure. | |
507 | |
508 This is the equivalent of the Python expression: int(o). */ | |
509 PyAPI_FUNC(PyObject *) PyNumber_Long(PyObject *o); | |
510 | |
511 /* Returns the object 'o' converted to a float object on success, or NULL | |
512 on failure. | |
513 | |
514 This is the equivalent of the Python expression: float(o). */ | |
515 PyAPI_FUNC(PyObject *) PyNumber_Float(PyObject *o); | |
516 | |
517 | |
518 /* --- In-place variants of (some of) the above number protocol functions -- */ | |
519 | |
520 /* Returns the result of adding o2 to o1, possibly in-place, or NULL | |
521 on failure. | |
522 | |
523 This is the equivalent of the Python expression: o1 += o2. */ | |
524 PyAPI_FUNC(PyObject *) PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2); | |
525 | |
526 /* Returns the result of subtracting o2 from o1, possibly in-place or | |
527 NULL on failure. | |
528 | |
529 This is the equivalent of the Python expression: o1 -= o2. */ | |
530 PyAPI_FUNC(PyObject *) PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2); | |
531 | |
532 /* Returns the result of multiplying o1 by o2, possibly in-place, or NULL on | |
533 failure. | |
534 | |
535 This is the equivalent of the Python expression: o1 *= o2. */ | |
536 PyAPI_FUNC(PyObject *) PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2); | |
537 | |
538 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 | |
539 /* This is the equivalent of the Python expression: o1 @= o2. */ | |
540 PyAPI_FUNC(PyObject *) PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2); | |
541 #endif | |
542 | |
543 /* Returns the result of dividing o1 by o2 giving an integral result, possibly | |
544 in-place, or NULL on failure. | |
545 | |
546 This is the equivalent of the Python expression: o1 /= o2. */ | |
547 PyAPI_FUNC(PyObject *) PyNumber_InPlaceFloorDivide(PyObject *o1, | |
548 PyObject *o2); | |
549 | |
550 /* Returns the result of dividing o1 by o2 giving a float result, possibly | |
551 in-place, or null on failure. | |
552 | |
553 This is the equivalent of the Python expression: o1 /= o2. */ | |
554 PyAPI_FUNC(PyObject *) PyNumber_InPlaceTrueDivide(PyObject *o1, | |
555 PyObject *o2); | |
556 | |
557 /* Returns the remainder of dividing o1 by o2, possibly in-place, or NULL on | |
558 failure. | |
559 | |
560 This is the equivalent of the Python expression: o1 %= o2. */ | |
561 PyAPI_FUNC(PyObject *) PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2); | |
562 | |
563 /* Returns the result of raising o1 to the power of o2, possibly in-place, | |
564 or NULL on failure. | |
565 | |
566 This is the equivalent of the Python expression: o1 **= o2, | |
567 or o1 = pow(o1, o2, o3) if o3 is present. */ | |
568 PyAPI_FUNC(PyObject *) PyNumber_InPlacePower(PyObject *o1, PyObject *o2, | |
569 PyObject *o3); | |
570 | |
571 /* Returns the result of left shifting o1 by o2, possibly in-place, or NULL | |
572 on failure. | |
573 | |
574 This is the equivalent of the Python expression: o1 <<= o2. */ | |
575 PyAPI_FUNC(PyObject *) PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2); | |
576 | |
577 /* Returns the result of right shifting o1 by o2, possibly in-place or NULL | |
578 on failure. | |
579 | |
580 This is the equivalent of the Python expression: o1 >>= o2. */ | |
581 PyAPI_FUNC(PyObject *) PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2); | |
582 | |
583 /* Returns the result of bitwise and of o1 and o2, possibly in-place, or NULL | |
584 on failure. | |
585 | |
586 This is the equivalent of the Python expression: o1 &= o2. */ | |
587 PyAPI_FUNC(PyObject *) PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2); | |
588 | |
589 /* Returns the bitwise exclusive or of o1 by o2, possibly in-place, or NULL | |
590 on failure. | |
591 | |
592 This is the equivalent of the Python expression: o1 ^= o2. */ | |
593 PyAPI_FUNC(PyObject *) PyNumber_InPlaceXor(PyObject *o1, PyObject *o2); | |
594 | |
595 /* Returns the result of bitwise or of o1 and o2, possibly in-place, | |
596 or NULL on failure. | |
597 | |
598 This is the equivalent of the Python expression: o1 |= o2. */ | |
599 PyAPI_FUNC(PyObject *) PyNumber_InPlaceOr(PyObject *o1, PyObject *o2); | |
600 | |
601 /* Returns the integer n converted to a string with a base, with a base | |
602 marker of 0b, 0o or 0x prefixed if applicable. | |
603 | |
604 If n is not an int object, it is converted with PyNumber_Index first. */ | |
605 PyAPI_FUNC(PyObject *) PyNumber_ToBase(PyObject *n, int base); | |
606 | |
607 | |
608 /* === Sequence protocol ================================================ */ | |
609 | |
610 /* Return 1 if the object provides sequence protocol, and zero | |
611 otherwise. | |
612 | |
613 This function always succeeds. */ | |
614 PyAPI_FUNC(int) PySequence_Check(PyObject *o); | |
615 | |
616 /* Return the size of sequence object o, or -1 on failure. */ | |
617 PyAPI_FUNC(Py_ssize_t) PySequence_Size(PyObject *o); | |
618 | |
619 /* For DLL compatibility */ | |
620 #undef PySequence_Length | |
621 PyAPI_FUNC(Py_ssize_t) PySequence_Length(PyObject *o); | |
622 #define PySequence_Length PySequence_Size | |
623 | |
624 | |
625 /* Return the concatenation of o1 and o2 on success, and NULL on failure. | |
626 | |
627 This is the equivalent of the Python expression: o1 + o2. */ | |
628 PyAPI_FUNC(PyObject *) PySequence_Concat(PyObject *o1, PyObject *o2); | |
629 | |
630 /* Return the result of repeating sequence object 'o' 'count' times, | |
631 or NULL on failure. | |
632 | |
633 This is the equivalent of the Python expression: o * count. */ | |
634 PyAPI_FUNC(PyObject *) PySequence_Repeat(PyObject *o, Py_ssize_t count); | |
635 | |
636 /* Return the ith element of o, or NULL on failure. | |
637 | |
638 This is the equivalent of the Python expression: o[i]. */ | |
639 PyAPI_FUNC(PyObject *) PySequence_GetItem(PyObject *o, Py_ssize_t i); | |
640 | |
641 /* Return the slice of sequence object o between i1 and i2, or NULL on failure. | |
642 | |
643 This is the equivalent of the Python expression: o[i1:i2]. */ | |
644 PyAPI_FUNC(PyObject *) PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2); | |
645 | |
646 /* Assign object 'v' to the ith element of the sequence 'o'. Raise an exception | |
647 and return -1 on failure; return 0 on success. | |
648 | |
649 This is the equivalent of the Python statement o[i] = v. */ | |
650 PyAPI_FUNC(int) PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v); | |
651 | |
652 /* Delete the 'i'-th element of the sequence 'v'. Returns -1 on failure. | |
653 | |
654 This is the equivalent of the Python statement: del o[i]. */ | |
655 PyAPI_FUNC(int) PySequence_DelItem(PyObject *o, Py_ssize_t i); | |
656 | |
657 /* Assign the sequence object 'v' to the slice in sequence object 'o', | |
658 from 'i1' to 'i2'. Returns -1 on failure. | |
659 | |
660 This is the equivalent of the Python statement: o[i1:i2] = v. */ | |
661 PyAPI_FUNC(int) PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, | |
662 PyObject *v); | |
663 | |
664 /* Delete the slice in sequence object 'o' from 'i1' to 'i2'. | |
665 Returns -1 on failure. | |
666 | |
667 This is the equivalent of the Python statement: del o[i1:i2]. */ | |
668 PyAPI_FUNC(int) PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2); | |
669 | |
670 /* Returns the sequence 'o' as a tuple on success, and NULL on failure. | |
671 | |
672 This is equivalent to the Python expression: tuple(o). */ | |
673 PyAPI_FUNC(PyObject *) PySequence_Tuple(PyObject *o); | |
674 | |
675 /* Returns the sequence 'o' as a list on success, and NULL on failure. | |
676 This is equivalent to the Python expression: list(o) */ | |
677 PyAPI_FUNC(PyObject *) PySequence_List(PyObject *o); | |
678 | |
679 /* Return the sequence 'o' as a list, unless it's already a tuple or list. | |
680 | |
681 Use PySequence_Fast_GET_ITEM to access the members of this list, and | |
682 PySequence_Fast_GET_SIZE to get its length. | |
683 | |
684 Returns NULL on failure. If the object does not support iteration, raises a | |
685 TypeError exception with 'm' as the message text. */ | |
686 PyAPI_FUNC(PyObject *) PySequence_Fast(PyObject *o, const char* m); | |
687 | |
688 /* Return the size of the sequence 'o', assuming that 'o' was returned by | |
689 PySequence_Fast and is not NULL. */ | |
690 #define PySequence_Fast_GET_SIZE(o) \ | |
691 (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o)) | |
692 | |
693 /* Return the 'i'-th element of the sequence 'o', assuming that o was returned | |
694 by PySequence_Fast, and that i is within bounds. */ | |
695 #define PySequence_Fast_GET_ITEM(o, i)\ | |
696 (PyList_Check(o) ? PyList_GET_ITEM(o, i) : PyTuple_GET_ITEM(o, i)) | |
697 | |
698 /* Return a pointer to the underlying item array for | |
699 an object retured by PySequence_Fast */ | |
700 #define PySequence_Fast_ITEMS(sf) \ | |
701 (PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \ | |
702 : ((PyTupleObject *)(sf))->ob_item) | |
703 | |
704 /* Return the number of occurrences on value on 'o', that is, return | |
705 the number of keys for which o[key] == value. | |
706 | |
707 On failure, return -1. This is equivalent to the Python expression: | |
708 o.count(value). */ | |
709 PyAPI_FUNC(Py_ssize_t) PySequence_Count(PyObject *o, PyObject *value); | |
710 | |
711 /* Return 1 if 'ob' is in the sequence 'seq'; 0 if 'ob' is not in the sequence | |
712 'seq'; -1 on error. | |
713 | |
714 Use __contains__ if possible, else _PySequence_IterSearch(). */ | |
715 PyAPI_FUNC(int) PySequence_Contains(PyObject *seq, PyObject *ob); | |
716 | |
717 /* For DLL-level backwards compatibility */ | |
718 #undef PySequence_In | |
719 /* Determine if the sequence 'o' contains 'value'. If an item in 'o' is equal | |
720 to 'value', return 1, otherwise return 0. On error, return -1. | |
721 | |
722 This is equivalent to the Python expression: value in o. */ | |
723 PyAPI_FUNC(int) PySequence_In(PyObject *o, PyObject *value); | |
724 | |
725 /* For source-level backwards compatibility */ | |
726 #define PySequence_In PySequence_Contains | |
727 | |
728 | |
729 /* Return the first index for which o[i] == value. | |
730 On error, return -1. | |
731 | |
732 This is equivalent to the Python expression: o.index(value). */ | |
733 PyAPI_FUNC(Py_ssize_t) PySequence_Index(PyObject *o, PyObject *value); | |
734 | |
735 | |
736 /* --- In-place versions of some of the above Sequence functions --- */ | |
737 | |
738 /* Append sequence 'o2' to sequence 'o1', in-place when possible. Return the | |
739 resulting object, which could be 'o1', or NULL on failure. | |
740 | |
741 This is the equivalent of the Python expression: o1 += o2. */ | |
742 PyAPI_FUNC(PyObject *) PySequence_InPlaceConcat(PyObject *o1, PyObject *o2); | |
743 | |
744 /* Repeat sequence 'o' by 'count', in-place when possible. Return the resulting | |
745 object, which could be 'o', or NULL on failure. | |
746 | |
747 This is the equivalent of the Python expression: o1 *= count. */ | |
748 PyAPI_FUNC(PyObject *) PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count); | |
749 | |
750 | |
751 /* === Mapping protocol ================================================= */ | |
752 | |
753 /* Return 1 if the object provides mapping protocol, and 0 otherwise. | |
754 | |
755 This function always succeeds. */ | |
756 PyAPI_FUNC(int) PyMapping_Check(PyObject *o); | |
757 | |
758 /* Returns the number of keys in mapping object 'o' on success, and -1 on | |
759 failure. This is equivalent to the Python expression: len(o). */ | |
760 PyAPI_FUNC(Py_ssize_t) PyMapping_Size(PyObject *o); | |
761 | |
762 /* For DLL compatibility */ | |
763 #undef PyMapping_Length | |
764 PyAPI_FUNC(Py_ssize_t) PyMapping_Length(PyObject *o); | |
765 #define PyMapping_Length PyMapping_Size | |
766 | |
767 | |
768 /* Implemented as a macro: | |
769 | |
770 int PyMapping_DelItemString(PyObject *o, const char *key); | |
771 | |
772 Remove the mapping for the string 'key' from the mapping 'o'. Returns -1 on | |
773 failure. | |
774 | |
775 This is equivalent to the Python statement: del o[key]. */ | |
776 #define PyMapping_DelItemString(O,K) PyObject_DelItemString((O),(K)) | |
777 | |
778 /* Implemented as a macro: | |
779 | |
780 int PyMapping_DelItem(PyObject *o, PyObject *key); | |
781 | |
782 Remove the mapping for the object 'key' from the mapping object 'o'. | |
783 Returns -1 on failure. | |
784 | |
785 This is equivalent to the Python statement: del o[key]. */ | |
786 #define PyMapping_DelItem(O,K) PyObject_DelItem((O),(K)) | |
787 | |
788 /* On success, return 1 if the mapping object 'o' has the key 'key', | |
789 and 0 otherwise. | |
790 | |
791 This is equivalent to the Python expression: key in o. | |
792 | |
793 This function always succeeds. */ | |
794 PyAPI_FUNC(int) PyMapping_HasKeyString(PyObject *o, const char *key); | |
795 | |
796 /* Return 1 if the mapping object has the key 'key', and 0 otherwise. | |
797 | |
798 This is equivalent to the Python expression: key in o. | |
799 | |
800 This function always succeeds. */ | |
801 PyAPI_FUNC(int) PyMapping_HasKey(PyObject *o, PyObject *key); | |
802 | |
803 /* On success, return a list or tuple of the keys in mapping object 'o'. | |
804 On failure, return NULL. */ | |
805 PyAPI_FUNC(PyObject *) PyMapping_Keys(PyObject *o); | |
806 | |
807 /* On success, return a list or tuple of the values in mapping object 'o'. | |
808 On failure, return NULL. */ | |
809 PyAPI_FUNC(PyObject *) PyMapping_Values(PyObject *o); | |
810 | |
811 /* On success, return a list or tuple of the items in mapping object 'o', | |
812 where each item is a tuple containing a key-value pair. On failure, return | |
813 NULL. */ | |
814 PyAPI_FUNC(PyObject *) PyMapping_Items(PyObject *o); | |
815 | |
816 /* Return element of 'o' corresponding to the string 'key' or NULL on failure. | |
817 | |
818 This is the equivalent of the Python expression: o[key]. */ | |
819 PyAPI_FUNC(PyObject *) PyMapping_GetItemString(PyObject *o, | |
820 const char *key); | |
821 | |
822 /* Map the string 'key' to the value 'v' in the mapping 'o'. | |
823 Returns -1 on failure. | |
824 | |
825 This is the equivalent of the Python statement: o[key]=v. */ | |
826 PyAPI_FUNC(int) PyMapping_SetItemString(PyObject *o, const char *key, | |
827 PyObject *value); | |
828 | |
829 /* isinstance(object, typeorclass) */ | |
830 PyAPI_FUNC(int) PyObject_IsInstance(PyObject *object, PyObject *typeorclass); | |
831 | |
832 /* issubclass(object, typeorclass) */ | |
833 PyAPI_FUNC(int) PyObject_IsSubclass(PyObject *object, PyObject *typeorclass); | |
834 | |
835 #ifndef Py_LIMITED_API | |
836 # define Py_CPYTHON_ABSTRACTOBJECT_H | |
837 # include "cpython/abstract.h" | |
838 # undef Py_CPYTHON_ABSTRACTOBJECT_H | |
839 #endif | |
840 | |
841 #ifdef __cplusplus | |
842 } | |
843 #endif | |
844 #endif /* Py_ABSTRACTOBJECT_H */ |