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