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