1 #ifndef Py_ABSTRACTOBJECT_H 2 #define Py_ABSTRACTOBJECT_H 3 #ifdef __cplusplus 4 extern "C" { 5 #endif 6 7 #ifdef PY_SSIZE_T_CLEAN 8 #define PyObject_CallFunction _PyObject_CallFunction_SizeT 9 #define PyObject_CallMethod _PyObject_CallMethod_SizeT 10 #ifndef Py_LIMITED_API 11 #define _PyObject_CallMethodId _PyObject_CallMethodId_SizeT 12 #endif /* !Py_LIMITED_API */ 13 #endif 14 15 /* Abstract Object Interface (many thanks to Jim Fulton) */ 16 17 /* 18 PROPOSAL: A Generic Python Object Interface for Python C Modules 19 20 Problem 21 22 Python modules written in C that must access Python objects must do 23 so through routines whose interfaces are described by a set of 24 include files. Unfortunately, these routines vary according to the 25 object accessed. To use these routines, the C programmer must check 26 the type of the object being used and must call a routine based on 27 the object type. For example, to access an element of a sequence, 28 the programmer must determine whether the sequence is a list or a 29 tuple: 30 31 if(is_tupleobject(o)) 32 e=gettupleitem(o,i) 33 else if(is_listitem(o)) 34 e=getlistitem(o,i) 35 36 If the programmer wants to get an item from another type of object 37 that provides sequence behavior, there is no clear way to do it 38 correctly. 39 40 The persistent programmer may peruse object.h and find that the 41 _typeobject structure provides a means of invoking up to (currently 42 about) 41 special operators. So, for example, a routine can get an 43 item from any object that provides sequence behavior. However, to 44 use this mechanism, the programmer must make their code dependent on 45 the current Python implementation. 46 47 Also, certain semantics, especially memory management semantics, may 48 differ by the type of object being used. Unfortunately, these 49 semantics are not clearly described in the current include files. 50 An abstract interface providing more consistent semantics is needed. 51 52 Proposal 53 54 I propose the creation of a standard interface (with an associated 55 library of routines and/or macros) for generically obtaining the 56 services of Python objects. This proposal can be viewed as one 57 components of a Python C interface consisting of several components. 58 59 From the viewpoint of C access to Python services, we have (as 60 suggested by Guido in off-line discussions): 61 62 - "Very high level layer": two or three functions that let you exec or 63 eval arbitrary Python code given as a string in a module whose name is 64 given, passing C values in and getting C values out using 65 mkvalue/getargs style format strings. This does not require the user 66 to declare any variables of type "PyObject *". This should be enough 67 to write a simple application that gets Python code from the user, 68 execs it, and returns the output or errors. (Error handling must also 69 be part of this API.) 70 71 - "Abstract objects layer": which is the subject of this proposal. 72 It has many functions operating on objects, and lest you do many 73 things from C that you can also write in Python, without going 74 through the Python parser. 75 76 - "Concrete objects layer": This is the public type-dependent 77 interface provided by the standard built-in types, such as floats, 78 strings, and lists. This interface exists and is currently 79 documented by the collection of include files provided with the 80 Python distributions. 81 82 From the point of view of Python accessing services provided by C 83 modules: 84 85 - "Python module interface": this interface consist of the basic 86 routines used to define modules and their members. Most of the 87 current extensions-writing guide deals with this interface. 88 89 - "Built-in object interface": this is the interface that a new 90 built-in type must provide and the mechanisms and rules that a 91 developer of a new built-in type must use and follow. 92 93 This proposal is a "first-cut" that is intended to spur 94 discussion. See especially the lists of notes. 95 96 The Python C object interface will provide four protocols: object, 97 numeric, sequence, and mapping. Each protocol consists of a 98 collection of related operations. If an operation that is not 99 provided by a particular type is invoked, then a standard exception, 100 NotImplementedError is raised with an operation name as an argument. 101 In addition, for convenience this interface defines a set of 102 constructors for building objects of built-in types. This is needed 103 so new objects can be returned from C functions that otherwise treat 104 objects generically. 105 106 Memory Management 107 108 For all of the functions described in this proposal, if a function 109 retains a reference to a Python object passed as an argument, then the 110 function will increase the reference count of the object. It is 111 unnecessary for the caller to increase the reference count of an 112 argument in anticipation of the object's retention. 113 114 All Python objects returned from functions should be treated as new 115 objects. Functions that return objects assume that the caller will 116 retain a reference and the reference count of the object has already 117 been incremented to account for this fact. A caller that does not 118 retain a reference to an object that is returned from a function 119 must decrement the reference count of the object (using 120 DECREF(object)) to prevent memory leaks. 121 122 Note that the behavior mentioned here is different from the current 123 behavior for some objects (e.g. lists and tuples) when certain 124 type-specific routines are called directly (e.g. setlistitem). The 125 proposed abstraction layer will provide a consistent memory 126 management interface, correcting for inconsistent behavior for some 127 built-in types. 128 129 Protocols 130 131 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/ 132 133 /* Object Protocol: */ 134 135 /* Implemented elsewhere: 136 137 int PyObject_Print(PyObject *o, FILE *fp, int flags); 138 139 Print an object, o, on file, fp. Returns -1 on 140 error. The flags argument is used to enable certain printing 141 options. The only option currently supported is Py_Print_RAW. 142 143 (What should be said about Py_Print_RAW?) 144 145 */ 146 147 /* Implemented elsewhere: 148 149 int PyObject_HasAttrString(PyObject *o, const char *attr_name); 150 151 Returns 1 if o has the attribute attr_name, and 0 otherwise. 152 This is equivalent to the Python expression: 153 hasattr(o,attr_name). 154 155 This function always succeeds. 156 157 */ 158 159 /* Implemented elsewhere: 160 161 PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name); 162 163 Retrieve an attributed named attr_name form object o. 164 Returns the attribute value on success, or NULL on failure. 165 This is the equivalent of the Python expression: o.attr_name. 166 167 */ 168 169 /* Implemented elsewhere: 170 171 int PyObject_HasAttr(PyObject *o, PyObject *attr_name); 172 173 Returns 1 if o has the attribute attr_name, and 0 otherwise. 174 This is equivalent to the Python expression: 175 hasattr(o,attr_name). 176 177 This function always succeeds. 178 179 */ 180 181 /* Implemented elsewhere: 182 183 PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name); 184 185 Retrieve an attributed named attr_name form object o. 186 Returns the attribute value on success, or NULL on failure. 187 This is the equivalent of the Python expression: o.attr_name. 188 189 */ 190 191 192 /* Implemented elsewhere: 193 194 int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v); 195 196 Set the value of the attribute named attr_name, for object o, 197 to the value v. Raise an exception and return -1 on failure; return 0 on 198 success. This is the equivalent of the Python statement o.attr_name=v. 199 200 */ 201 202 /* Implemented elsewhere: 203 204 int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v); 205 206 Set the value of the attribute named attr_name, for object o, 207 to the value v. Raise an exception and return -1 on failure; return 0 on 208 success. This is the equivalent of the Python statement o.attr_name=v. 209 210 */ 211 212 /* implemented as a macro: 213 214 int PyObject_DelAttrString(PyObject *o, const char *attr_name); 215 216 Delete attribute named attr_name, for object o. Returns 217 -1 on failure. This is the equivalent of the Python 218 statement: del o.attr_name. 219 220 */ 221 #define PyObject_DelAttrString(O,A) PyObject_SetAttrString((O),(A),NULL) 222 223 /* implemented as a macro: 224 225 int PyObject_DelAttr(PyObject *o, PyObject *attr_name); 226 227 Delete attribute named attr_name, for object o. Returns -1 228 on failure. This is the equivalent of the Python 229 statement: del o.attr_name. 230 231 */ 232 #define PyObject_DelAttr(O,A) PyObject_SetAttr((O),(A),NULL) 233 234 /* Implemented elsewhere: 235 236 PyObject *PyObject_Repr(PyObject *o); 237 238 Compute the string representation of object, o. Returns the 239 string representation on success, NULL on failure. This is 240 the equivalent of the Python expression: repr(o). 241 242 Called by the repr() built-in function. 243 244 */ 245 246 /* Implemented elsewhere: 247 248 PyObject *PyObject_Str(PyObject *o); 249 250 Compute the string representation of object, o. Returns the 251 string representation on success, NULL on failure. This is 252 the equivalent of the Python expression: str(o).) 253 254 Called by the str() and print() built-in functions. 255 256 */ 257 258 /* Declared elsewhere 259 260 PyAPI_FUNC(int) PyCallable_Check(PyObject *o); 261 262 Determine if the object, o, is callable. Return 1 if the 263 object is callable and 0 otherwise. 264 265 This function always succeeds. 266 */ 267 268 PyAPI_FUNC(PyObject *) PyObject_Call(PyObject *callable_object, 269 PyObject *args, PyObject *kwargs); 270 271 /* 272 Call a callable Python object, callable_object, with 273 arguments and keywords arguments. The 'args' argument can not be 274 NULL. 275 */ 276 277 #ifndef Py_LIMITED_API 278 PyAPI_FUNC(PyObject*) _PyStack_AsTuple( 279 PyObject **stack, 280 Py_ssize_t nargs); 281 282 /* Convert keyword arguments from the (stack, kwnames) format to a Python 283 dictionary. 284 285 kwnames must only contains str strings, no subclass, and all keys must 286 be unique. kwnames is not checked, usually these checks are done before or later 287 calling _PyStack_AsDict(). For example, _PyArg_ParseStack() raises an 288 error if a key is not a string. */ 289 PyAPI_FUNC(PyObject *) _PyStack_AsDict( 290 PyObject **values, 291 PyObject *kwnames); 292 293 /* Convert (args, nargs, kwargs) into a (stack, nargs, kwnames). 294 295 Return a new stack which should be released by PyMem_Free(), or return 296 args unchanged if kwargs is NULL or an empty dictionary. 297 298 The stack uses borrowed references. 299 300 The type of keyword keys is not checked, these checks should be done 301 later (ex: _PyArg_ParseStack). */ 302 PyAPI_FUNC(PyObject **) _PyStack_UnpackDict( 303 PyObject **args, 304 Py_ssize_t nargs, 305 PyObject *kwargs, 306 PyObject **kwnames, 307 PyObject *func); 308 309 /* Call the callable object func with the "fast call" calling convention: 310 args is a C array for positional arguments (nargs is the number of 311 positional arguments), kwargs is a dictionary for keyword arguments. 312 313 If nargs is equal to zero, args can be NULL. kwargs can be NULL. 314 nargs must be greater or equal to zero. 315 316 Return the result on success. Raise an exception on return NULL on 317 error. */ 318 PyAPI_FUNC(PyObject *) _PyObject_FastCallDict(PyObject *func, 319 PyObject **args, Py_ssize_t nargs, 320 PyObject *kwargs); 321 322 /* Call the callable object func with the "fast call" calling convention: 323 args is a C array for positional arguments followed by values of 324 keyword arguments. Keys of keyword arguments are stored as a tuple 325 of strings in kwnames. nargs is the number of positional parameters at 326 the beginning of stack. The size of kwnames gives the number of keyword 327 values in the stack after positional arguments. 328 329 kwnames must only contains str strings, no subclass, and all keys must 330 be unique. 331 332 If nargs is equal to zero and there is no keyword argument (kwnames is 333 NULL or its size is zero), args can be NULL. 334 335 Return the result on success. Raise an exception and return NULL on 336 error. */ 337 PyAPI_FUNC(PyObject *) _PyObject_FastCallKeywords 338 (PyObject *func, 339 PyObject **args, 340 Py_ssize_t nargs, 341 PyObject *kwnames); 342 343 #define _PyObject_FastCall(func, args, nargs) \ 344 _PyObject_FastCallDict((func), (args), (nargs), NULL) 345 346 #define _PyObject_CallNoArg(func) \ 347 _PyObject_FastCall((func), NULL, 0) 348 349 #define _PyObject_CallArg1(func, arg) \ 350 _PyObject_FastCall((func), &(arg), 1) 351 352 PyAPI_FUNC(PyObject *) _PyObject_Call_Prepend(PyObject *func, 353 PyObject *obj, PyObject *args, 354 PyObject *kwargs); 355 356 PyAPI_FUNC(PyObject *) _Py_CheckFunctionResult(PyObject *func, 357 PyObject *result, 358 const char *where); 359 #endif /* Py_LIMITED_API */ 360 361 PyAPI_FUNC(PyObject *) PyObject_CallObject(PyObject *callable_object, 362 PyObject *args); 363 364 /* 365 Call a callable Python object, callable_object, with 366 arguments given by the tuple, args. If no arguments are 367 needed, then args may be NULL. Returns the result of the 368 call on success, or NULL on failure. This is the equivalent 369 of the Python expression: o(*args). 370 */ 371 372 PyAPI_FUNC(PyObject *) PyObject_CallFunction(PyObject *callable_object, 373 const char *format, ...); 374 375 /* 376 Call a callable Python object, callable_object, with a 377 variable number of C arguments. The C arguments are described 378 using a mkvalue-style format string. The format may be NULL, 379 indicating that no arguments are provided. Returns the 380 result of the call on success, or NULL on failure. This is 381 the equivalent of the Python expression: o(*args). 382 */ 383 384 385 PyAPI_FUNC(PyObject *) PyObject_CallMethod(PyObject *o, 386 const char *method, 387 const char *format, ...); 388 389 /* 390 Call the method named m of object o with a variable number of 391 C arguments. The C arguments are described by a mkvalue 392 format string. The format may be NULL, indicating that no 393 arguments are provided. Returns the result of the call on 394 success, or NULL on failure. This is the equivalent of the 395 Python expression: o.method(args). 396 */ 397 398 #ifndef Py_LIMITED_API 399 PyAPI_FUNC(PyObject *) _PyObject_CallMethodId(PyObject *o, 400 _Py_Identifier *method, 401 const char *format, ...); 402 403 /* 404 Like PyObject_CallMethod, but expect a _Py_Identifier* as the 405 method name. 406 */ 407 #endif /* !Py_LIMITED_API */ 408 409 PyAPI_FUNC(PyObject *) _PyObject_CallFunction_SizeT(PyObject *callable, 410 const char *format, 411 ...); 412 PyAPI_FUNC(PyObject *) _PyObject_CallMethod_SizeT(PyObject *o, 413 const char *name, 414 const char *format, 415 ...); 416 #ifndef Py_LIMITED_API 417 PyAPI_FUNC(PyObject *) _PyObject_CallMethodId_SizeT(PyObject *o, 418 _Py_Identifier *name, 419 const char *format, 420 ...); 421 #endif /* !Py_LIMITED_API */ 422 423 PyAPI_FUNC(PyObject *) PyObject_CallFunctionObjArgs(PyObject *callable, 424 ...); 425 426 /* 427 Call a callable Python object, callable_object, with a 428 variable number of C arguments. The C arguments are provided 429 as PyObject * values, terminated by a NULL. Returns the 430 result of the call on success, or NULL on failure. This is 431 the equivalent of the Python expression: o(*args). 432 */ 433 434 435 PyAPI_FUNC(PyObject *) PyObject_CallMethodObjArgs(PyObject *o, 436 PyObject *method, ...); 437 #ifndef Py_LIMITED_API 438 PyAPI_FUNC(PyObject *) _PyObject_CallMethodIdObjArgs(PyObject *o, 439 struct _Py_Identifier *method, 440 ...); 441 #endif /* !Py_LIMITED_API */ 442 443 /* 444 Call the method named m of object o with a variable number of 445 C arguments. The C arguments are provided as PyObject * 446 values, terminated by NULL. Returns the result of the call 447 on success, or NULL on failure. This is the equivalent of 448 the Python expression: o.method(args). 449 */ 450 451 452 /* Implemented elsewhere: 453 454 long PyObject_Hash(PyObject *o); 455 456 Compute and return the hash, hash_value, of an object, o. On 457 failure, return -1. This is the equivalent of the Python 458 expression: hash(o). 459 */ 460 461 462 /* Implemented elsewhere: 463 464 int PyObject_IsTrue(PyObject *o); 465 466 Returns 1 if the object, o, is considered to be true, 0 if o is 467 considered to be false and -1 on failure. This is equivalent to the 468 Python expression: not not o 469 */ 470 471 /* Implemented elsewhere: 472 473 int PyObject_Not(PyObject *o); 474 475 Returns 0 if the object, o, is considered to be true, 1 if o is 476 considered to be false and -1 on failure. This is equivalent to the 477 Python expression: not o 478 */ 479 480 PyAPI_FUNC(PyObject *) PyObject_Type(PyObject *o); 481 482 /* 483 On success, returns a type object corresponding to the object 484 type of object o. On failure, returns NULL. This is 485 equivalent to the Python expression: type(o). 486 */ 487 488 PyAPI_FUNC(Py_ssize_t) PyObject_Size(PyObject *o); 489 490 /* 491 Return the size of object o. If the object, o, provides 492 both sequence and mapping protocols, the sequence size is 493 returned. On error, -1 is returned. This is the equivalent 494 to the Python expression: len(o). 495 */ 496 497 /* For DLL compatibility */ 498 #undef PyObject_Length 499 PyAPI_FUNC(Py_ssize_t) PyObject_Length(PyObject *o); 500 #define PyObject_Length PyObject_Size 501 502 #ifndef Py_LIMITED_API 503 PyAPI_FUNC(int) _PyObject_HasLen(PyObject *o); 504 PyAPI_FUNC(Py_ssize_t) PyObject_LengthHint(PyObject *o, Py_ssize_t); 505 #endif 506 507 /* 508 Guess the size of object o using len(o) or o.__length_hint__(). 509 If neither of those return a non-negative value, then return the 510 default value. If one of the calls fails, this function returns -1. 511 */ 512 513 PyAPI_FUNC(PyObject *) PyObject_GetItem(PyObject *o, PyObject *key); 514 515 /* 516 Return element of o corresponding to the object, key, or NULL 517 on failure. This is the equivalent of the Python expression: 518 o[key]. 519 */ 520 521 PyAPI_FUNC(int) PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v); 522 523 /* 524 Map the object key to the value v. Raise an exception and return -1 525 on failure; return 0 on success. This is the equivalent of the Python 526 statement o[key]=v. 527 */ 528 529 PyAPI_FUNC(int) PyObject_DelItemString(PyObject *o, const char *key); 530 531 /* 532 Remove the mapping for object, key, from the object *o. 533 Returns -1 on failure. This is equivalent to 534 the Python statement: del o[key]. 535 */ 536 537 PyAPI_FUNC(int) PyObject_DelItem(PyObject *o, PyObject *key); 538 539 /* 540 Delete the mapping for key from *o. Returns -1 on failure. 541 This is the equivalent of the Python statement: del o[key]. 542 */ 543 544 /* old buffer API 545 FIXME: usage of these should all be replaced in Python itself 546 but for backwards compatibility we will implement them. 547 Their usage without a corresponding "unlock" mechanism 548 may create issues (but they would already be there). */ 549 550 PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj, 551 const char **buffer, 552 Py_ssize_t *buffer_len); 553 554 /* 555 Takes an arbitrary object which must support the (character, 556 single segment) buffer interface and returns a pointer to a 557 read-only memory location useable as character based input 558 for subsequent processing. 559 560 0 is returned on success. buffer and buffer_len are only 561 set in case no error occurs. Otherwise, -1 is returned and 562 an exception set. 563 */ 564 565 PyAPI_FUNC(int) PyObject_CheckReadBuffer(PyObject *obj); 566 567 /* 568 Checks whether an arbitrary object supports the (character, 569 single segment) buffer interface. Returns 1 on success, 0 570 on failure. 571 */ 572 573 PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj, 574 const void **buffer, 575 Py_ssize_t *buffer_len); 576 577 /* 578 Same as PyObject_AsCharBuffer() except that this API expects 579 (readable, single segment) buffer interface and returns a 580 pointer to a read-only memory location which can contain 581 arbitrary data. 582 583 0 is returned on success. buffer and buffer_len are only 584 set in case no error occurs. Otherwise, -1 is returned and 585 an exception set. 586 */ 587 588 PyAPI_FUNC(int) PyObject_AsWriteBuffer(PyObject *obj, 589 void **buffer, 590 Py_ssize_t *buffer_len); 591 592 /* 593 Takes an arbitrary object which must support the (writable, 594 single segment) buffer interface and returns a pointer to a 595 writable memory location in buffer of size buffer_len. 596 597 0 is returned on success. buffer and buffer_len are only 598 set in case no error occurs. Otherwise, -1 is returned and 599 an exception set. 600 */ 601 602 /* new buffer API */ 603 604 #ifndef Py_LIMITED_API 605 #define PyObject_CheckBuffer(obj) \ 606 (((obj)->ob_type->tp_as_buffer != NULL) && \ 607 ((obj)->ob_type->tp_as_buffer->bf_getbuffer != NULL)) 608 609 /* Return 1 if the getbuffer function is available, otherwise 610 return 0 */ 611 612 PyAPI_FUNC(int) PyObject_GetBuffer(PyObject *obj, Py_buffer *view, 613 int flags); 614 615 /* This is a C-API version of the getbuffer function call. It checks 616 to make sure object has the required function pointer and issues the 617 call. Returns -1 and raises an error on failure and returns 0 on 618 success 619 */ 620 621 622 PyAPI_FUNC(void *) PyBuffer_GetPointer(Py_buffer *view, Py_ssize_t *indices); 623 624 /* Get the memory area pointed to by the indices for the buffer given. 625 Note that view->ndim is the assumed size of indices 626 */ 627 628 PyAPI_FUNC(int) PyBuffer_SizeFromFormat(const char *); 629 630 /* Return the implied itemsize of the data-format area from a 631 struct-style description */ 632 633 634 635 /* Implementation in memoryobject.c */ 636 PyAPI_FUNC(int) PyBuffer_ToContiguous(void *buf, Py_buffer *view, 637 Py_ssize_t len, char order); 638 639 PyAPI_FUNC(int) PyBuffer_FromContiguous(Py_buffer *view, void *buf, 640 Py_ssize_t len, char order); 641 642 643 /* Copy len bytes of data from the contiguous chunk of memory 644 pointed to by buf into the buffer exported by obj. Return 645 0 on success and return -1 and raise a PyBuffer_Error on 646 error (i.e. the object does not have a buffer interface or 647 it is not working). 648 649 If fort is 'F', then if the object is multi-dimensional, 650 then the data will be copied into the array in 651 Fortran-style (first dimension varies the fastest). If 652 fort is 'C', then the data will be copied into the array 653 in C-style (last dimension varies the fastest). If fort 654 is 'A', then it does not matter and the copy will be made 655 in whatever way is more efficient. 656 657 */ 658 659 PyAPI_FUNC(int) PyObject_CopyData(PyObject *dest, PyObject *src); 660 661 /* Copy the data from the src buffer to the buffer of destination 662 */ 663 664 PyAPI_FUNC(int) PyBuffer_IsContiguous(const Py_buffer *view, char fort); 665 666 667 PyAPI_FUNC(void) PyBuffer_FillContiguousStrides(int ndims, 668 Py_ssize_t *shape, 669 Py_ssize_t *strides, 670 int itemsize, 671 char fort); 672 673 /* Fill the strides array with byte-strides of a contiguous 674 (Fortran-style if fort is 'F' or C-style otherwise) 675 array of the given shape with the given number of bytes 676 per element. 677 */ 678 679 PyAPI_FUNC(int) PyBuffer_FillInfo(Py_buffer *view, PyObject *o, void *buf, 680 Py_ssize_t len, int readonly, 681 int flags); 682 683 /* Fills in a buffer-info structure correctly for an exporter 684 that can only share a contiguous chunk of memory of 685 "unsigned bytes" of the given length. Returns 0 on success 686 and -1 (with raising an error) on error. 687 */ 688 689 PyAPI_FUNC(void) PyBuffer_Release(Py_buffer *view); 690 691 /* Releases a Py_buffer obtained from getbuffer ParseTuple's s*. 692 */ 693 #endif /* Py_LIMITED_API */ 694 695 PyAPI_FUNC(PyObject *) PyObject_Format(PyObject* obj, 696 PyObject *format_spec); 697 /* 698 Takes an arbitrary object and returns the result of 699 calling obj.__format__(format_spec). 700 */ 701 702 /* Iterators */ 703 704 PyAPI_FUNC(PyObject *) PyObject_GetIter(PyObject *); 705 /* Takes an object and returns an iterator for it. 706 This is typically a new iterator but if the argument 707 is an iterator, this returns itself. */ 708 709 #define PyIter_Check(obj) \ 710 ((obj)->ob_type->tp_iternext != NULL && \ 711 (obj)->ob_type->tp_iternext != &_PyObject_NextNotImplemented) 712 713 PyAPI_FUNC(PyObject *) PyIter_Next(PyObject *); 714 /* Takes an iterator object and calls its tp_iternext slot, 715 returning the next value. If the iterator is exhausted, 716 this returns NULL without setting an exception. 717 NULL with an exception means an error occurred. */ 718 719 /* Number Protocol:*/ 720 721 PyAPI_FUNC(int) PyNumber_Check(PyObject *o); 722 723 /* 724 Returns 1 if the object, o, provides numeric protocols, and 725 false otherwise. 726 727 This function always succeeds. 728 */ 729 730 PyAPI_FUNC(PyObject *) PyNumber_Add(PyObject *o1, PyObject *o2); 731 732 /* 733 Returns the result of adding o1 and o2, or null on failure. 734 This is the equivalent of the Python expression: o1+o2. 735 */ 736 737 PyAPI_FUNC(PyObject *) PyNumber_Subtract(PyObject *o1, PyObject *o2); 738 739 /* 740 Returns the result of subtracting o2 from o1, or null on 741 failure. This is the equivalent of the Python expression: 742 o1-o2. 743 */ 744 745 PyAPI_FUNC(PyObject *) PyNumber_Multiply(PyObject *o1, PyObject *o2); 746 747 /* 748 Returns the result of multiplying o1 and o2, or null on 749 failure. This is the equivalent of the Python expression: 750 o1*o2. 751 */ 752 753 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 754 PyAPI_FUNC(PyObject *) PyNumber_MatrixMultiply(PyObject *o1, PyObject *o2); 755 756 /* 757 This is the equivalent of the Python expression: o1 @ o2. 758 */ 759 #endif 760 761 PyAPI_FUNC(PyObject *) PyNumber_FloorDivide(PyObject *o1, PyObject *o2); 762 763 /* 764 Returns the result of dividing o1 by o2 giving an integral result, 765 or null on failure. 766 This is the equivalent of the Python expression: o1//o2. 767 */ 768 769 PyAPI_FUNC(PyObject *) PyNumber_TrueDivide(PyObject *o1, PyObject *o2); 770 771 /* 772 Returns the result of dividing o1 by o2 giving a float result, 773 or null on failure. 774 This is the equivalent of the Python expression: o1/o2. 775 */ 776 777 PyAPI_FUNC(PyObject *) PyNumber_Remainder(PyObject *o1, PyObject *o2); 778 779 /* 780 Returns the remainder of dividing o1 by o2, or null on 781 failure. This is the equivalent of the Python expression: 782 o1%o2. 783 */ 784 785 PyAPI_FUNC(PyObject *) PyNumber_Divmod(PyObject *o1, PyObject *o2); 786 787 /* 788 See the built-in function divmod. Returns NULL on failure. 789 This is the equivalent of the Python expression: 790 divmod(o1,o2). 791 */ 792 793 PyAPI_FUNC(PyObject *) PyNumber_Power(PyObject *o1, PyObject *o2, 794 PyObject *o3); 795 796 /* 797 See the built-in function pow. Returns NULL on failure. 798 This is the equivalent of the Python expression: 799 pow(o1,o2,o3), where o3 is optional. 800 */ 801 802 PyAPI_FUNC(PyObject *) PyNumber_Negative(PyObject *o); 803 804 /* 805 Returns the negation of o on success, or null on failure. 806 This is the equivalent of the Python expression: -o. 807 */ 808 809 PyAPI_FUNC(PyObject *) PyNumber_Positive(PyObject *o); 810 811 /* 812 Returns the (what?) of o on success, or NULL on failure. 813 This is the equivalent of the Python expression: +o. 814 */ 815 816 PyAPI_FUNC(PyObject *) PyNumber_Absolute(PyObject *o); 817 818 /* 819 Returns the absolute value of o, or null on failure. This is 820 the equivalent of the Python expression: abs(o). 821 */ 822 823 PyAPI_FUNC(PyObject *) PyNumber_Invert(PyObject *o); 824 825 /* 826 Returns the bitwise negation of o on success, or NULL on 827 failure. This is the equivalent of the Python expression: 828 ~o. 829 */ 830 831 PyAPI_FUNC(PyObject *) PyNumber_Lshift(PyObject *o1, PyObject *o2); 832 833 /* 834 Returns the result of left shifting o1 by o2 on success, or 835 NULL on failure. This is the equivalent of the Python 836 expression: o1 << o2. 837 */ 838 839 PyAPI_FUNC(PyObject *) PyNumber_Rshift(PyObject *o1, PyObject *o2); 840 841 /* 842 Returns the result of right shifting o1 by o2 on success, or 843 NULL on failure. This is the equivalent of the Python 844 expression: o1 >> o2. 845 */ 846 847 PyAPI_FUNC(PyObject *) PyNumber_And(PyObject *o1, PyObject *o2); 848 849 /* 850 Returns the result of bitwise and of o1 and o2 on success, or 851 NULL on failure. This is the equivalent of the Python 852 expression: o1&o2. 853 854 */ 855 856 PyAPI_FUNC(PyObject *) PyNumber_Xor(PyObject *o1, PyObject *o2); 857 858 /* 859 Returns the bitwise exclusive or of o1 by o2 on success, or 860 NULL on failure. This is the equivalent of the Python 861 expression: o1^o2. 862 */ 863 864 PyAPI_FUNC(PyObject *) PyNumber_Or(PyObject *o1, PyObject *o2); 865 866 /* 867 Returns the result of bitwise or on o1 and o2 on success, or 868 NULL on failure. This is the equivalent of the Python 869 expression: o1|o2. 870 */ 871 872 #define PyIndex_Check(obj) \ 873 ((obj)->ob_type->tp_as_number != NULL && \ 874 (obj)->ob_type->tp_as_number->nb_index != NULL) 875 876 PyAPI_FUNC(PyObject *) PyNumber_Index(PyObject *o); 877 878 /* 879 Returns the object converted to a Python int 880 or NULL with an error raised on failure. 881 */ 882 883 PyAPI_FUNC(Py_ssize_t) PyNumber_AsSsize_t(PyObject *o, PyObject *exc); 884 885 /* 886 Returns the object converted to Py_ssize_t by going through 887 PyNumber_Index first. If an overflow error occurs while 888 converting the int to Py_ssize_t, then the second argument 889 is the error-type to return. If it is NULL, then the overflow error 890 is cleared and the value is clipped. 891 */ 892 893 PyAPI_FUNC(PyObject *) PyNumber_Long(PyObject *o); 894 895 /* 896 Returns the o converted to an integer object on success, or 897 NULL on failure. This is the equivalent of the Python 898 expression: int(o). 899 */ 900 901 PyAPI_FUNC(PyObject *) PyNumber_Float(PyObject *o); 902 903 /* 904 Returns the o converted to a float object on success, or NULL 905 on failure. This is the equivalent of the Python expression: 906 float(o). 907 */ 908 909 /* In-place variants of (some of) the above number protocol functions */ 910 911 PyAPI_FUNC(PyObject *) PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2); 912 913 /* 914 Returns the result of adding o2 to o1, possibly in-place, or null 915 on failure. This is the equivalent of the Python expression: 916 o1 += o2. 917 */ 918 919 PyAPI_FUNC(PyObject *) PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2); 920 921 /* 922 Returns the result of subtracting o2 from o1, possibly in-place or 923 null on failure. This is the equivalent of the Python expression: 924 o1 -= o2. 925 */ 926 927 PyAPI_FUNC(PyObject *) PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2); 928 929 /* 930 Returns the result of multiplying o1 by o2, possibly in-place, or 931 null on failure. This is the equivalent of the Python expression: 932 o1 *= o2. 933 */ 934 935 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 936 PyAPI_FUNC(PyObject *) PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2); 937 938 /* 939 This is the equivalent of the Python expression: o1 @= o2. 940 */ 941 #endif 942 943 PyAPI_FUNC(PyObject *) PyNumber_InPlaceFloorDivide(PyObject *o1, 944 PyObject *o2); 945 946 /* 947 Returns the result of dividing o1 by o2 giving an integral result, 948 possibly in-place, or null on failure. 949 This is the equivalent of the Python expression: 950 o1 /= o2. 951 */ 952 953 PyAPI_FUNC(PyObject *) PyNumber_InPlaceTrueDivide(PyObject *o1, 954 PyObject *o2); 955 956 /* 957 Returns the result of dividing o1 by o2 giving a float result, 958 possibly in-place, or null on failure. 959 This is the equivalent of the Python expression: 960 o1 /= o2. 961 */ 962 963 PyAPI_FUNC(PyObject *) PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2); 964 965 /* 966 Returns the remainder of dividing o1 by o2, possibly in-place, or 967 null on failure. This is the equivalent of the Python expression: 968 o1 %= o2. 969 */ 970 971 PyAPI_FUNC(PyObject *) PyNumber_InPlacePower(PyObject *o1, PyObject *o2, 972 PyObject *o3); 973 974 /* 975 Returns the result of raising o1 to the power of o2, possibly 976 in-place, or null on failure. This is the equivalent of the Python 977 expression: o1 **= o2, or pow(o1, o2, o3) if o3 is present. 978 */ 979 980 PyAPI_FUNC(PyObject *) PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2); 981 982 /* 983 Returns the result of left shifting o1 by o2, possibly in-place, or 984 null on failure. This is the equivalent of the Python expression: 985 o1 <<= o2. 986 */ 987 988 PyAPI_FUNC(PyObject *) PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2); 989 990 /* 991 Returns the result of right shifting o1 by o2, possibly in-place or 992 null on failure. This is the equivalent of the Python expression: 993 o1 >>= o2. 994 */ 995 996 PyAPI_FUNC(PyObject *) PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2); 997 998 /* 999 Returns the result of bitwise and of o1 and o2, possibly in-place, 1000 or null on failure. This is the equivalent of the Python 1001 expression: o1 &= o2. 1002 */ 1003 1004 PyAPI_FUNC(PyObject *) PyNumber_InPlaceXor(PyObject *o1, PyObject *o2); 1005 1006 /* 1007 Returns the bitwise exclusive or of o1 by o2, possibly in-place, or 1008 null on failure. This is the equivalent of the Python expression: 1009 o1 ^= o2. 1010 */ 1011 1012 PyAPI_FUNC(PyObject *) PyNumber_InPlaceOr(PyObject *o1, PyObject *o2); 1013 1014 /* 1015 Returns the result of bitwise or of o1 and o2, possibly in-place, 1016 or null on failure. This is the equivalent of the Python 1017 expression: o1 |= o2. 1018 */ 1019 1020 PyAPI_FUNC(PyObject *) PyNumber_ToBase(PyObject *n, int base); 1021 1022 /* 1023 Returns the integer n converted to a string with a base, with a base 1024 marker of 0b, 0o or 0x prefixed if applicable. 1025 If n is not an int object, it is converted with PyNumber_Index first. 1026 */ 1027 1028 1029 /* Sequence protocol:*/ 1030 1031 PyAPI_FUNC(int) PySequence_Check(PyObject *o); 1032 1033 /* 1034 Return 1 if the object provides sequence protocol, and zero 1035 otherwise. 1036 1037 This function always succeeds. 1038 */ 1039 1040 PyAPI_FUNC(Py_ssize_t) PySequence_Size(PyObject *o); 1041 1042 /* 1043 Return the size of sequence object o, or -1 on failure. 1044 */ 1045 1046 /* For DLL compatibility */ 1047 #undef PySequence_Length 1048 PyAPI_FUNC(Py_ssize_t) PySequence_Length(PyObject *o); 1049 #define PySequence_Length PySequence_Size 1050 1051 1052 PyAPI_FUNC(PyObject *) PySequence_Concat(PyObject *o1, PyObject *o2); 1053 1054 /* 1055 Return the concatenation of o1 and o2 on success, and NULL on 1056 failure. This is the equivalent of the Python 1057 expression: o1+o2. 1058 */ 1059 1060 PyAPI_FUNC(PyObject *) PySequence_Repeat(PyObject *o, Py_ssize_t count); 1061 1062 /* 1063 Return the result of repeating sequence object o count times, 1064 or NULL on failure. This is the equivalent of the Python 1065 expression: o1*count. 1066 */ 1067 1068 PyAPI_FUNC(PyObject *) PySequence_GetItem(PyObject *o, Py_ssize_t i); 1069 1070 /* 1071 Return the ith element of o, or NULL on failure. This is the 1072 equivalent of the Python expression: o[i]. 1073 */ 1074 1075 PyAPI_FUNC(PyObject *) PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2); 1076 1077 /* 1078 Return the slice of sequence object o between i1 and i2, or 1079 NULL on failure. This is the equivalent of the Python 1080 expression: o[i1:i2]. 1081 */ 1082 1083 PyAPI_FUNC(int) PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v); 1084 1085 /* 1086 Assign object v to the ith element of o. Raise an exception and return 1087 -1 on failure; return 0 on success. This is the equivalent of the 1088 Python statement o[i]=v. 1089 */ 1090 1091 PyAPI_FUNC(int) PySequence_DelItem(PyObject *o, Py_ssize_t i); 1092 1093 /* 1094 Delete the ith element of object v. Returns 1095 -1 on failure. This is the equivalent of the Python 1096 statement: del o[i]. 1097 */ 1098 1099 PyAPI_FUNC(int) PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, 1100 PyObject *v); 1101 1102 /* 1103 Assign the sequence object, v, to the slice in sequence 1104 object, o, from i1 to i2. Returns -1 on failure. This is the 1105 equivalent of the Python statement: o[i1:i2]=v. 1106 */ 1107 1108 PyAPI_FUNC(int) PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2); 1109 1110 /* 1111 Delete the slice in sequence object, o, from i1 to i2. 1112 Returns -1 on failure. This is the equivalent of the Python 1113 statement: del o[i1:i2]. 1114 */ 1115 1116 PyAPI_FUNC(PyObject *) PySequence_Tuple(PyObject *o); 1117 1118 /* 1119 Returns the sequence, o, as a tuple on success, and NULL on failure. 1120 This is equivalent to the Python expression: tuple(o) 1121 */ 1122 1123 1124 PyAPI_FUNC(PyObject *) PySequence_List(PyObject *o); 1125 /* 1126 Returns the sequence, o, as a list on success, and NULL on failure. 1127 This is equivalent to the Python expression: list(o) 1128 */ 1129 1130 PyAPI_FUNC(PyObject *) PySequence_Fast(PyObject *o, const char* m); 1131 /* 1132 Return the sequence, o, as a list, unless it's already a 1133 tuple or list. Use PySequence_Fast_GET_ITEM to access the 1134 members of this list, and PySequence_Fast_GET_SIZE to get its length. 1135 1136 Returns NULL on failure. If the object does not support iteration, 1137 raises a TypeError exception with m as the message text. 1138 */ 1139 1140 #define PySequence_Fast_GET_SIZE(o) \ 1141 (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o)) 1142 /* 1143 Return the size of o, assuming that o was returned by 1144 PySequence_Fast and is not NULL. 1145 */ 1146 1147 #define PySequence_Fast_GET_ITEM(o, i)\ 1148 (PyList_Check(o) ? PyList_GET_ITEM(o, i) : PyTuple_GET_ITEM(o, i)) 1149 /* 1150 Return the ith element of o, assuming that o was returned by 1151 PySequence_Fast, and that i is within bounds. 1152 */ 1153 1154 #define PySequence_ITEM(o, i)\ 1155 ( Py_TYPE(o)->tp_as_sequence->sq_item(o, i) ) 1156 /* Assume tp_as_sequence and sq_item exist and that i does not 1157 need to be corrected for a negative index 1158 */ 1159 1160 #define PySequence_Fast_ITEMS(sf) \ 1161 (PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \ 1162 : ((PyTupleObject *)(sf))->ob_item) 1163 /* Return a pointer to the underlying item array for 1164 an object retured by PySequence_Fast */ 1165 1166 PyAPI_FUNC(Py_ssize_t) PySequence_Count(PyObject *o, PyObject *value); 1167 1168 /* 1169 Return the number of occurrences on value on o, that is, 1170 return the number of keys for which o[key]==value. On 1171 failure, return -1. This is equivalent to the Python 1172 expression: o.count(value). 1173 */ 1174 1175 PyAPI_FUNC(int) PySequence_Contains(PyObject *seq, PyObject *ob); 1176 /* 1177 Return -1 if error; 1 if ob in seq; 0 if ob not in seq. 1178 Use __contains__ if possible, else _PySequence_IterSearch(). 1179 */ 1180 1181 #ifndef Py_LIMITED_API 1182 #define PY_ITERSEARCH_COUNT 1 1183 #define PY_ITERSEARCH_INDEX 2 1184 #define PY_ITERSEARCH_CONTAINS 3 1185 PyAPI_FUNC(Py_ssize_t) _PySequence_IterSearch(PyObject *seq, 1186 PyObject *obj, int operation); 1187 #endif 1188 /* 1189 Iterate over seq. Result depends on the operation: 1190 PY_ITERSEARCH_COUNT: return # of times obj appears in seq; -1 if 1191 error. 1192 PY_ITERSEARCH_INDEX: return 0-based index of first occurrence of 1193 obj in seq; set ValueError and return -1 if none found; 1194 also return -1 on error. 1195 PY_ITERSEARCH_CONTAINS: return 1 if obj in seq, else 0; -1 on 1196 error. 1197 */ 1198 1199 /* For DLL-level backwards compatibility */ 1200 #undef PySequence_In 1201 PyAPI_FUNC(int) PySequence_In(PyObject *o, PyObject *value); 1202 1203 /* For source-level backwards compatibility */ 1204 #define PySequence_In PySequence_Contains 1205 1206 /* 1207 Determine if o contains value. If an item in o is equal to 1208 X, return 1, otherwise return 0. On error, return -1. This 1209 is equivalent to the Python expression: value in o. 1210 */ 1211 1212 PyAPI_FUNC(Py_ssize_t) PySequence_Index(PyObject *o, PyObject *value); 1213 1214 /* 1215 Return the first index for which o[i]=value. On error, 1216 return -1. This is equivalent to the Python 1217 expression: o.index(value). 1218 */ 1219 1220 /* In-place versions of some of the above Sequence functions. */ 1221 1222 PyAPI_FUNC(PyObject *) PySequence_InPlaceConcat(PyObject *o1, PyObject *o2); 1223 1224 /* 1225 Append o2 to o1, in-place when possible. Return the resulting 1226 object, which could be o1, or NULL on failure. This is the 1227 equivalent of the Python expression: o1 += o2. 1228 1229 */ 1230 1231 PyAPI_FUNC(PyObject *) PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count); 1232 1233 /* 1234 Repeat o1 by count, in-place when possible. Return the resulting 1235 object, which could be o1, or NULL on failure. This is the 1236 equivalent of the Python expression: o1 *= count. 1237 1238 */ 1239 1240 /* Mapping protocol:*/ 1241 1242 PyAPI_FUNC(int) PyMapping_Check(PyObject *o); 1243 1244 /* 1245 Return 1 if the object provides mapping protocol, and zero 1246 otherwise. 1247 1248 This function always succeeds. 1249 */ 1250 1251 PyAPI_FUNC(Py_ssize_t) PyMapping_Size(PyObject *o); 1252 1253 /* 1254 Returns the number of keys in object o on success, and -1 on 1255 failure. For objects that do not provide sequence protocol, 1256 this is equivalent to the Python expression: len(o). 1257 */ 1258 1259 /* For DLL compatibility */ 1260 #undef PyMapping_Length 1261 PyAPI_FUNC(Py_ssize_t) PyMapping_Length(PyObject *o); 1262 #define PyMapping_Length PyMapping_Size 1263 1264 1265 /* implemented as a macro: 1266 1267 int PyMapping_DelItemString(PyObject *o, const char *key); 1268 1269 Remove the mapping for object, key, from the object *o. 1270 Returns -1 on failure. This is equivalent to 1271 the Python statement: del o[key]. 1272 */ 1273 #define PyMapping_DelItemString(O,K) PyObject_DelItemString((O),(K)) 1274 1275 /* implemented as a macro: 1276 1277 int PyMapping_DelItem(PyObject *o, PyObject *key); 1278 1279 Remove the mapping for object, key, from the object *o. 1280 Returns -1 on failure. This is equivalent to 1281 the Python statement: del o[key]. 1282 */ 1283 #define PyMapping_DelItem(O,K) PyObject_DelItem((O),(K)) 1284 1285 PyAPI_FUNC(int) PyMapping_HasKeyString(PyObject *o, const char *key); 1286 1287 /* 1288 On success, return 1 if the mapping object has the key, key, 1289 and 0 otherwise. This is equivalent to the Python expression: 1290 key in o. 1291 1292 This function always succeeds. 1293 */ 1294 1295 PyAPI_FUNC(int) PyMapping_HasKey(PyObject *o, PyObject *key); 1296 1297 /* 1298 Return 1 if the mapping object has the key, key, 1299 and 0 otherwise. This is equivalent to the Python expression: 1300 key in o. 1301 1302 This function always succeeds. 1303 1304 */ 1305 1306 PyAPI_FUNC(PyObject *) PyMapping_Keys(PyObject *o); 1307 1308 /* 1309 On success, return a list or tuple of the keys in object o. 1310 On failure, return NULL. 1311 */ 1312 1313 PyAPI_FUNC(PyObject *) PyMapping_Values(PyObject *o); 1314 1315 /* 1316 On success, return a list or tuple of the values in object o. 1317 On failure, return NULL. 1318 */ 1319 1320 PyAPI_FUNC(PyObject *) PyMapping_Items(PyObject *o); 1321 1322 /* 1323 On success, return a list or tuple of the items in object o, 1324 where each item is a tuple containing a key-value pair. 1325 On failure, return NULL. 1326 1327 */ 1328 1329 PyAPI_FUNC(PyObject *) PyMapping_GetItemString(PyObject *o, 1330 const char *key); 1331 1332 /* 1333 Return element of o corresponding to the object, key, or NULL 1334 on failure. This is the equivalent of the Python expression: 1335 o[key]. 1336 */ 1337 1338 PyAPI_FUNC(int) PyMapping_SetItemString(PyObject *o, const char *key, 1339 PyObject *value); 1340 1341 /* 1342 Map the object, key, to the value, v. Returns 1343 -1 on failure. This is the equivalent of the Python 1344 statement: o[key]=v. 1345 */ 1346 1347 1348 PyAPI_FUNC(int) PyObject_IsInstance(PyObject *object, PyObject *typeorclass); 1349 /* isinstance(object, typeorclass) */ 1350 1351 PyAPI_FUNC(int) PyObject_IsSubclass(PyObject *object, PyObject *typeorclass); 1352 /* issubclass(object, typeorclass) */ 1353 1354 1355 #ifndef Py_LIMITED_API 1356 PyAPI_FUNC(int) _PyObject_RealIsInstance(PyObject *inst, PyObject *cls); 1357 1358 PyAPI_FUNC(int) _PyObject_RealIsSubclass(PyObject *derived, PyObject *cls); 1359 1360 PyAPI_FUNC(char *const *) _PySequence_BytesToCharpArray(PyObject* self); 1361 1362 PyAPI_FUNC(void) _Py_FreeCharPArray(char *const array[]); 1363 1364 /* For internal use by buffer API functions */ 1365 PyAPI_FUNC(void) _Py_add_one_to_index_F(int nd, Py_ssize_t *index, 1366 const Py_ssize_t *shape); 1367 PyAPI_FUNC(void) _Py_add_one_to_index_C(int nd, Py_ssize_t *index, 1368 const Py_ssize_t *shape); 1369 #endif /* !Py_LIMITED_API */ 1370 1371 1372 #ifdef __cplusplus 1373 } 1374 #endif 1375 #endif /* Py_ABSTRACTOBJECT_H */ 1376