Orbits  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Pages
abstract.h
Go to the documentation of this file.
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,
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
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,
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 */

Copyright 2014 Google Inc. All rights reserved.