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