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 #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 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) */ 268 PyAPI_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) */ 277 PyAPI_FUNC(Py_ssize_t) PyObject_Size(PyObject *o); 278 279 280 /* For DLL compatibility */ 281 #undef PyObject_Length 282 PyAPI_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] */ 289 PyAPI_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. */ 297 PyAPI_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]. */ 303 PyAPI_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]. */ 309 PyAPI_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. */ 325 Py_DEPRECATED(3.0) 326 PyAPI_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. */ 334 Py_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. */ 342 Py_DEPRECATED(3.0) 343 PyAPI_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. */ 353 Py_DEPRECATED(3.0) 354 PyAPI_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). */ 363 PyAPI_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. */ 372 PyAPI_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. */ 377 PyAPI_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. */ 386 PyAPI_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. */ 394 PyAPI_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. */ 399 PyAPI_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. */ 404 PyAPI_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. */ 409 PyAPI_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. */ 413 PyAPI_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. */ 420 PyAPI_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. */ 426 PyAPI_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. */ 431 PyAPI_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). */ 438 PyAPI_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. */ 444 PyAPI_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. */ 450 PyAPI_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. */ 455 PyAPI_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). */ 460 PyAPI_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. */ 465 PyAPI_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. */ 470 PyAPI_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. */ 476 PyAPI_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. */ 482 PyAPI_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. */ 487 PyAPI_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. */ 493 PyAPI_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. */ 497 PyAPI_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. */ 501 PyAPI_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. */ 509 PyAPI_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). */ 515 PyAPI_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). */ 521 PyAPI_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. */ 530 PyAPI_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. */ 536 PyAPI_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. */ 542 PyAPI_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. */ 546 PyAPI_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. */ 553 PyAPI_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. */ 560 PyAPI_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. */ 567 PyAPI_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. */ 574 PyAPI_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. */ 581 PyAPI_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. */ 587 PyAPI_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. */ 593 PyAPI_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. */ 599 PyAPI_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. */ 605 PyAPI_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. */ 611 PyAPI_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. */ 620 PyAPI_FUNC(int) PySequence_Check(PyObject *o); 621 622 /* Return the size of sequence object o, or -1 on failure. */ 623 PyAPI_FUNC(Py_ssize_t) PySequence_Size(PyObject *o); 624 625 /* For DLL compatibility */ 626 #undef PySequence_Length 627 PyAPI_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. */ 634 PyAPI_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. */ 640 PyAPI_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]. */ 645 PyAPI_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]. */ 650 PyAPI_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. */ 656 PyAPI_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]. */ 661 PyAPI_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. */ 667 PyAPI_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]. */ 674 PyAPI_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). */ 679 PyAPI_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) */ 683 PyAPI_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. */ 692 PyAPI_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). */ 715 PyAPI_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(). */ 721 PyAPI_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. */ 729 PyAPI_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). */ 739 PyAPI_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. */ 748 PyAPI_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. */ 754 PyAPI_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. */ 762 PyAPI_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). */ 766 PyAPI_FUNC(Py_ssize_t) PyMapping_Size(PyObject *o); 767 768 /* For DLL compatibility */ 769 #undef PyMapping_Length 770 PyAPI_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. */ 800 PyAPI_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. */ 807 PyAPI_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. */ 811 PyAPI_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. */ 815 PyAPI_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. */ 820 PyAPI_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]. */ 825 PyAPI_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. */ 832 PyAPI_FUNC(int) PyMapping_SetItemString(PyObject *o, const char *key, 833 PyObject *value); 834 835 /* isinstance(object, typeorclass) */ 836 PyAPI_FUNC(int) PyObject_IsInstance(PyObject *object, PyObject *typeorclass); 837 838 /* issubclass(object, typeorclass) */ 839 PyAPI_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 */ 851