blob: 09efd119bf35d2af5f311bdffd8929879f436bb7 [file] [log] [blame]
Guido van Rossuma8275371995-07-18 14:07:00 +00001#ifndef Py_ABSTRACTOBJECT_H
2#define Py_ABSTRACTOBJECT_H
3#ifdef __cplusplus
4extern "C" {
5#endif
6
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00007#ifdef PY_SSIZE_T_CLEAN
Victor Stinner2a358f82016-12-06 16:55:39 +01008# define PyObject_CallFunction _PyObject_CallFunction_SizeT
9# define PyObject_CallMethod _PyObject_CallMethod_SizeT
10# ifndef Py_LIMITED_API
11# define _PyObject_CallMethodId _PyObject_CallMethodId_SizeT
12# endif /* !Py_LIMITED_API */
Thomas Wouters49fd7fa2006-04-21 10:40:58 +000013#endif
14
Guido van Rossuma8275371995-07-18 14:07:00 +000015/* Abstract Object Interface (many thanks to Jim Fulton) */
16
17/*
18 PROPOSAL: A Generic Python Object Interface for Python C Modules
19
20Problem
21
22 Python modules written in C that must access Python objects must do
23 so through routines whose interfaces are described by a set of
24 include files. Unfortunately, these routines vary according to the
25 object accessed. To use these routines, the C programmer must check
26 the type of the object being used and must call a routine based on
27 the object type. For example, to access an element of a sequence,
28 the programmer must determine whether the sequence is a list or a
29 tuple:
30
Victor Stinner2a358f82016-12-06 16:55:39 +010031 if (is_tupleobject(o))
32 e = gettupleitem(o, i)
33 else if (is_listitem(o))
34 e = getlistitem(o, i)
Guido van Rossuma8275371995-07-18 14:07:00 +000035
36 If the programmer wants to get an item from another type of object
37 that provides sequence behavior, there is no clear way to do it
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000038 correctly.
Guido van Rossuma8275371995-07-18 14:07:00 +000039
40 The persistent programmer may peruse object.h and find that the
41 _typeobject structure provides a means of invoking up to (currently
42 about) 41 special operators. So, for example, a routine can get an
43 item from any object that provides sequence behavior. However, to
44 use this mechanism, the programmer must make their code dependent on
45 the current Python implementation.
46
47 Also, certain semantics, especially memory management semantics, may
48 differ by the type of object being used. Unfortunately, these
49 semantics are not clearly described in the current include files.
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000050 An abstract interface providing more consistent semantics is needed.
Guido van Rossuma8275371995-07-18 14:07:00 +000051
52Proposal
53
54 I propose the creation of a standard interface (with an associated
55 library of routines and/or macros) for generically obtaining the
56 services of Python objects. This proposal can be viewed as one
57 components of a Python C interface consisting of several components.
58
Raymond Hettingera72e2f92003-02-28 05:11:03 +000059 From the viewpoint of C access to Python services, we have (as
Guido van Rossuma8275371995-07-18 14:07:00 +000060 suggested by Guido in off-line discussions):
61
62 - "Very high level layer": two or three functions that let you exec or
63 eval arbitrary Python code given as a string in a module whose name is
64 given, passing C values in and getting C values out using
65 mkvalue/getargs style format strings. This does not require the user
66 to declare any variables of type "PyObject *". This should be enough
67 to write a simple application that gets Python code from the user,
68 execs it, and returns the output or errors. (Error handling must also
69 be part of this API.)
70
71 - "Abstract objects layer": which is the subject of this proposal.
72 It has many functions operating on objects, and lest you do many
73 things from C that you can also write in Python, without going
74 through the Python parser.
75
76 - "Concrete objects layer": This is the public type-dependent
77 interface provided by the standard built-in types, such as floats,
78 strings, and lists. This interface exists and is currently
Raymond Hettingera72e2f92003-02-28 05:11:03 +000079 documented by the collection of include files provided with the
Guido van Rossuma8275371995-07-18 14:07:00 +000080 Python distributions.
81
82 From the point of view of Python accessing services provided by C
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000083 modules:
Guido van Rossuma8275371995-07-18 14:07:00 +000084
85 - "Python module interface": this interface consist of the basic
86 routines used to define modules and their members. Most of the
87 current extensions-writing guide deals with this interface.
88
89 - "Built-in object interface": this is the interface that a new
90 built-in type must provide and the mechanisms and rules that a
91 developer of a new built-in type must use and follow.
92
93 This proposal is a "first-cut" that is intended to spur
94 discussion. See especially the lists of notes.
95
96 The Python C object interface will provide four protocols: object,
97 numeric, sequence, and mapping. Each protocol consists of a
98 collection of related operations. If an operation that is not
99 provided by a particular type is invoked, then a standard exception,
Martin Panter7462b6492015-11-02 03:37:02 +0000100 NotImplementedError is raised with an operation name as an argument.
Guido van Rossuma8275371995-07-18 14:07:00 +0000101 In addition, for convenience this interface defines a set of
102 constructors for building objects of built-in types. This is needed
103 so new objects can be returned from C functions that otherwise treat
104 objects generically.
105
106Memory Management
107
108 For all of the functions described in this proposal, if a function
109 retains a reference to a Python object passed as an argument, then the
110 function will increase the reference count of the object. It is
111 unnecessary for the caller to increase the reference count of an
112 argument in anticipation of the object's retention.
113
114 All Python objects returned from functions should be treated as new
115 objects. Functions that return objects assume that the caller will
116 retain a reference and the reference count of the object has already
117 been incremented to account for this fact. A caller that does not
118 retain a reference to an object that is returned from a function
119 must decrement the reference count of the object (using
120 DECREF(object)) to prevent memory leaks.
121
122 Note that the behavior mentioned here is different from the current
123 behavior for some objects (e.g. lists and tuples) when certain
124 type-specific routines are called directly (e.g. setlistitem). The
125 proposed abstraction layer will provide a consistent memory
126 management interface, correcting for inconsistent behavior for some
127 built-in types.
128
129Protocols
Victor Stinner2a358f82016-12-06 16:55:39 +0100130*/
Guido van Rossuma8275371995-07-18 14:07:00 +0000131
132
Victor Stinner2a358f82016-12-06 16:55:39 +0100133/* === Object Protocol ================================================== */
Guido van Rossuma8275371995-07-18 14:07:00 +0000134
Victor Stinner2a358f82016-12-06 16:55:39 +0100135/* Implemented elsewhere:
Guido van Rossuma8275371995-07-18 14:07:00 +0000136
Victor Stinner2a358f82016-12-06 16:55:39 +0100137int PyObject_Print(PyObject *o, FILE *fp, int flags);
Guido van Rossuma8275371995-07-18 14:07:00 +0000138
Victor Stinner2a358f82016-12-06 16:55:39 +0100139Print an object, o, on file, fp. Returns -1 on
140error. The flags argument is used to enable certain printing
141options. The only option currently supported is Py_Print_RAW.
Guido van Rossuma8275371995-07-18 14:07:00 +0000142
Victor Stinner2a358f82016-12-06 16:55:39 +0100143(What should be said about Py_Print_RAW?)
Guido van Rossuma8275371995-07-18 14:07:00 +0000144
Victor Stinner2a358f82016-12-06 16:55:39 +0100145 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000146
Victor Stinner2a358f82016-12-06 16:55:39 +0100147/* Implemented elsewhere:
Guido van Rossuma8275371995-07-18 14:07:00 +0000148
Victor Stinner2a358f82016-12-06 16:55:39 +0100149int PyObject_HasAttrString(PyObject *o, const char *attr_name);
Guido van Rossuma8275371995-07-18 14:07:00 +0000150
Victor Stinner2a358f82016-12-06 16:55:39 +0100151Returns 1 if o has the attribute attr_name, and 0 otherwise.
152This is equivalent to the Python expression:
153hasattr(o,attr_name).
Guido van Rossuma8275371995-07-18 14:07:00 +0000154
Victor Stinner2a358f82016-12-06 16:55:39 +0100155This function always succeeds.
Guido van Rossuma8275371995-07-18 14:07:00 +0000156
Victor Stinner2a358f82016-12-06 16:55:39 +0100157 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000158
Victor Stinner2a358f82016-12-06 16:55:39 +0100159/* Implemented elsewhere:
160
161PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name);
162
163Retrieve an attributed named attr_name form object o.
164Returns the attribute value on success, or NULL on failure.
165This is the equivalent of the Python expression: o.attr_name.
166
167 */
168
169/* Implemented elsewhere:
170
171int PyObject_HasAttr(PyObject *o, PyObject *attr_name);
172
173Returns 1 if o has the attribute attr_name, and 0 otherwise.
174This is equivalent to the Python expression:
175hasattr(o,attr_name).
176
177This function always succeeds.
178
179 */
180
181/* Implemented elsewhere:
182
183PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name);
184
185Retrieve an attributed named attr_name form object o.
186Returns the attribute value on success, or NULL on failure.
187This is the equivalent of the Python expression: o.attr_name.
188
189 */
190
191
192/* Implemented elsewhere:
193
194int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v);
195
196Set the value of the attribute named attr_name, for object o,
197to the value v. Raise an exception and return -1 on failure; return 0 on
198success. This is the equivalent of the Python statement o.attr_name=v.
199
200 */
201
202/* Implemented elsewhere:
203
204int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v);
205
206Set the value of the attribute named attr_name, for object o,
207to the value v. Raise an exception and return -1 on failure; return 0 on
208success. This is the equivalent of the Python statement o.attr_name=v.
209
210 */
211
212/* implemented as a macro:
213
214int PyObject_DelAttrString(PyObject *o, const char *attr_name);
215
216Delete attribute named attr_name, for object o. Returns
217-1 on failure. This is the equivalent of the Python
218statement: del o.attr_name.
219
220 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000221#define PyObject_DelAttrString(O,A) PyObject_SetAttrString((O),(A),NULL)
222
Victor Stinner2a358f82016-12-06 16:55:39 +0100223/* implemented as a macro:
Guido van Rossuma8275371995-07-18 14:07:00 +0000224
Victor Stinner2a358f82016-12-06 16:55:39 +0100225int PyObject_DelAttr(PyObject *o, PyObject *attr_name);
Guido van Rossuma8275371995-07-18 14:07:00 +0000226
Victor Stinner2a358f82016-12-06 16:55:39 +0100227Delete attribute named attr_name, for object o. Returns -1
228on failure. This is the equivalent of the Python
229statement: del o.attr_name.
Guido van Rossuma8275371995-07-18 14:07:00 +0000230
Victor Stinner2a358f82016-12-06 16:55:39 +0100231 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000232#define PyObject_DelAttr(O,A) PyObject_SetAttr((O),(A),NULL)
233
Victor Stinner2a358f82016-12-06 16:55:39 +0100234/* Implemented elsewhere:
Guido van Rossuma8275371995-07-18 14:07:00 +0000235
Victor Stinner2a358f82016-12-06 16:55:39 +0100236PyObject *PyObject_Repr(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000237
Victor Stinner2a358f82016-12-06 16:55:39 +0100238Compute the string representation of object, o. Returns the
239string representation on success, NULL on failure. This is
240the equivalent of the Python expression: repr(o).
Guido van Rossuma8275371995-07-18 14:07:00 +0000241
Victor Stinner2a358f82016-12-06 16:55:39 +0100242Called by the repr() built-in function.
Guido van Rossuma8275371995-07-18 14:07:00 +0000243
Victor Stinner2a358f82016-12-06 16:55:39 +0100244 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000245
Victor Stinner2a358f82016-12-06 16:55:39 +0100246/* Implemented elsewhere:
Guido van Rossuma8275371995-07-18 14:07:00 +0000247
Victor Stinner2a358f82016-12-06 16:55:39 +0100248PyObject *PyObject_Str(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000249
Victor Stinner2a358f82016-12-06 16:55:39 +0100250Compute the string representation of object, o. Returns the
251string representation on success, NULL on failure. This is
252the equivalent of the Python expression: str(o).)
Guido van Rossuma8275371995-07-18 14:07:00 +0000253
Victor Stinner2a358f82016-12-06 16:55:39 +0100254Called by the str() and print() built-in functions.
Marc-André Lemburgad7c98e2001-01-17 17:09:53 +0000255
Victor Stinner2a358f82016-12-06 16:55:39 +0100256 */
Marc-André Lemburgad7c98e2001-01-17 17:09:53 +0000257
Victor Stinner2a358f82016-12-06 16:55:39 +0100258 /* Declared elsewhere
Thomas Wouters89f507f2006-12-13 04:49:30 +0000259
Victor Stinner2a358f82016-12-06 16:55:39 +0100260PyAPI_FUNC(int) PyCallable_Check(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000261
Victor Stinner2a358f82016-12-06 16:55:39 +0100262Determine if the object, o, is callable. Return 1 if the
263object is callable and 0 otherwise.
Guido van Rossuma8275371995-07-18 14:07:00 +0000264
Victor Stinner2a358f82016-12-06 16:55:39 +0100265This function always succeeds.
266 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000267
Victor Stinner2a358f82016-12-06 16:55:39 +0100268/* Call a callable Python object 'callable' with arguments given by the
269 tuple 'args' and keywords arguments given by the dictionary 'kwargs'.
Tim Peters6d6c1a32001-08-02 04:15:00 +0000270
Victor Stinner2a358f82016-12-06 16:55:39 +0100271 'args' must not be *NULL*, use an empty tuple if no arguments are
272 needed. If no named arguments are needed, 'kwargs' can be NULL.
Victor Stinner2d0eb652016-12-06 16:27:24 +0100273
Victor Stinner2a358f82016-12-06 16:55:39 +0100274 This is the equivalent of the Python expression:
275 callable(*args, **kwargs). */
276PyAPI_FUNC(PyObject *) PyObject_Call(PyObject *callable,
277 PyObject *args, PyObject *kwargs);
278
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000279
Victor Stinner4a7cc882015-03-06 23:35:27 +0100280#ifndef Py_LIMITED_API
Victor Stinner2a358f82016-12-06 16:55:39 +0100281PyAPI_FUNC(PyObject*) _PyStack_AsTuple(
282 PyObject **stack,
283 Py_ssize_t nargs);
Victor Stinner9be7e7b2016-08-19 16:11:43 +0200284
Victor Stinner2a358f82016-12-06 16:55:39 +0100285/* Convert keyword arguments from the (stack, kwnames) format to a Python
286 dictionary.
Victor Stinner57f91ac2016-09-12 13:37:07 +0200287
Victor Stinner2a358f82016-12-06 16:55:39 +0100288 kwnames must only contains str strings, no subclass, and all keys must
289 be unique. kwnames is not checked, usually these checks are done before or later
290 calling _PyStack_AsDict(). For example, _PyArg_ParseStack() raises an
291 error if a key is not a string. */
292PyAPI_FUNC(PyObject *) _PyStack_AsDict(
293 PyObject **values,
294 PyObject *kwnames);
Victor Stinnerae8b69c2016-09-09 14:07:44 -0700295
Victor Stinner2a358f82016-12-06 16:55:39 +0100296/* Convert (args, nargs, kwargs) into a (stack, nargs, kwnames).
Victor Stinnera9efb2f2016-09-09 17:40:22 -0700297
Victor Stinner2a358f82016-12-06 16:55:39 +0100298 Return a new stack which should be released by PyMem_Free(), or return
299 args unchanged if kwargs is NULL or an empty dictionary.
Victor Stinnera9efb2f2016-09-09 17:40:22 -0700300
Victor Stinner2a358f82016-12-06 16:55:39 +0100301 The stack uses borrowed references.
Victor Stinnera9efb2f2016-09-09 17:40:22 -0700302
Victor Stinner2a358f82016-12-06 16:55:39 +0100303 The type of keyword keys is not checked, these checks should be done
304 later (ex: _PyArg_ParseStack). */
305PyAPI_FUNC(PyObject **) _PyStack_UnpackDict(
306 PyObject **args,
307 Py_ssize_t nargs,
308 PyObject *kwargs,
309 PyObject **kwnames,
310 PyObject *func);
Victor Stinnera9efb2f2016-09-09 17:40:22 -0700311
Victor Stinner2a358f82016-12-06 16:55:39 +0100312/* Call the callable object 'callable' with the "fast call" calling convention:
313 args is a C array for positional arguments (nargs is the number of
314 positional arguments), kwargs is a dictionary for keyword arguments.
Victor Stinner9be7e7b2016-08-19 16:11:43 +0200315
Victor Stinner2a358f82016-12-06 16:55:39 +0100316 If nargs is equal to zero, args can be NULL. kwargs can be NULL.
317 nargs must be greater or equal to zero.
Victor Stinner9be7e7b2016-08-19 16:11:43 +0200318
Victor Stinner2a358f82016-12-06 16:55:39 +0100319 Return the result on success. Raise an exception on return NULL on
320 error. */
321PyAPI_FUNC(PyObject *) _PyObject_FastCallDict(
322 PyObject *callable,
323 PyObject **args,
324 Py_ssize_t nargs,
325 PyObject *kwargs);
Victor Stinner559bb6a2016-08-22 22:48:54 +0200326
Victor Stinner2a358f82016-12-06 16:55:39 +0100327/* Call the callable object 'callable' with the "fast call" calling convention:
328 args is a C array for positional arguments followed by values of
329 keyword arguments. Keys of keyword arguments are stored as a tuple
330 of strings in kwnames. nargs is the number of positional parameters at
331 the beginning of stack. The size of kwnames gives the number of keyword
332 values in the stack after positional arguments.
Victor Stinnerd8735722016-09-09 12:36:44 -0700333
Victor Stinner2a358f82016-12-06 16:55:39 +0100334 kwnames must only contains str strings, no subclass, and all keys must
335 be unique.
Victor Stinnerd8735722016-09-09 12:36:44 -0700336
Victor Stinner2a358f82016-12-06 16:55:39 +0100337 If nargs is equal to zero and there is no keyword argument (kwnames is
338 NULL or its size is zero), args can be NULL.
Victor Stinner57f91ac2016-09-12 13:37:07 +0200339
Victor Stinner2a358f82016-12-06 16:55:39 +0100340 Return the result on success. Raise an exception and return NULL on
341 error. */
342PyAPI_FUNC(PyObject *) _PyObject_FastCallKeywords(
343 PyObject *callable,
344 PyObject **args,
345 Py_ssize_t nargs,
346 PyObject *kwnames);
Victor Stinnerd8735722016-09-09 12:36:44 -0700347
Victor Stinner559bb6a2016-08-22 22:48:54 +0200348#define _PyObject_FastCall(func, args, nargs) \
349 _PyObject_FastCallDict((func), (args), (nargs), NULL)
350
351#define _PyObject_CallNoArg(func) \
Victor Stinner7bfb42d2016-12-05 17:04:32 +0100352 _PyObject_FastCallDict((func), NULL, 0, NULL)
Victor Stinner9be7e7b2016-08-19 16:11:43 +0200353
Victor Stinner2a358f82016-12-06 16:55:39 +0100354PyAPI_FUNC(PyObject *) _PyObject_Call_Prepend(
355 PyObject *callable,
356 PyObject *obj,
357 PyObject *args,
358 PyObject *kwargs);
Victor Stinner3f1057a2016-08-25 01:04:14 +0200359
Victor Stinner2a358f82016-12-06 16:55:39 +0100360PyAPI_FUNC(PyObject *) _Py_CheckFunctionResult(PyObject *callable,
361 PyObject *result,
362 const char *where);
Victor Stinner9be7e7b2016-08-19 16:11:43 +0200363#endif /* Py_LIMITED_API */
Victor Stinner4a7cc882015-03-06 23:35:27 +0100364
Victor Stinner2d0eb652016-12-06 16:27:24 +0100365
Victor Stinner2a358f82016-12-06 16:55:39 +0100366/* Call a callable Python object 'callable', with arguments given by the
367 tuple 'args'. If no arguments are needed, then 'args' can be *NULL*.
Victor Stinner2d0eb652016-12-06 16:27:24 +0100368
Victor Stinner2a358f82016-12-06 16:55:39 +0100369 Returns the result of the call on success, or *NULL* on failure.
Guido van Rossuma8275371995-07-18 14:07:00 +0000370
Victor Stinner2a358f82016-12-06 16:55:39 +0100371 This is the equivalent of the Python expression:
372 callable(*args) */
373PyAPI_FUNC(PyObject *) PyObject_CallObject(PyObject *callable,
374 PyObject *args);
Guido van Rossuma8275371995-07-18 14:07:00 +0000375
Victor Stinner2a358f82016-12-06 16:55:39 +0100376/* Call a callable Python object, callable, with a variable number of C
377 arguments. The C arguments are described using a mkvalue-style format
378 string.
Victor Stinner2d0eb652016-12-06 16:27:24 +0100379
Victor Stinner2a358f82016-12-06 16:55:39 +0100380 The format may be NULL, indicating that no arguments are provided.
Victor Stinner2d0eb652016-12-06 16:27:24 +0100381
Victor Stinner2a358f82016-12-06 16:55:39 +0100382 Returns the result of the call on success, or NULL on failure.
Guido van Rossuma8275371995-07-18 14:07:00 +0000383
Victor Stinner2a358f82016-12-06 16:55:39 +0100384 This is the equivalent of the Python expression:
385 callable(arg1, arg2, ...) */
386PyAPI_FUNC(PyObject *) PyObject_CallFunction(PyObject *callable,
387 const char *format, ...);
Guido van Rossuma8275371995-07-18 14:07:00 +0000388
Victor Stinner2a358f82016-12-06 16:55:39 +0100389/* Call the method named 'name' of object 'obj' with a variable number of
390 C arguments. The C arguments are described by a mkvalue format string.
Guido van Rossuma8275371995-07-18 14:07:00 +0000391
Victor Stinner2a358f82016-12-06 16:55:39 +0100392 The format can be NULL, indicating that no arguments are provided.
Victor Stinner2d0eb652016-12-06 16:27:24 +0100393
Victor Stinner2a358f82016-12-06 16:55:39 +0100394 Returns the result of the call on success, or NULL on failure.
395
396 This is the equivalent of the Python expression:
397 obj.name(arg1, arg2, ...) */
398PyAPI_FUNC(PyObject *) PyObject_CallMethod(PyObject *obj,
399 const char *name,
400 const char *format, ...);
Guido van Rossuma8275371995-07-18 14:07:00 +0000401
Serhiy Storchaka9fab79b2016-09-11 11:03:14 +0300402#ifndef Py_LIMITED_API
Victor Stinner2a358f82016-12-06 16:55:39 +0100403PyAPI_FUNC(PyObject *) _PyObject_CallMethodId(PyObject *obj,
404 _Py_Identifier *name,
405 const char *format, ...);
Martin v. Löwisafe55bb2011-10-09 10:38:36 +0200406
Victor Stinner2a358f82016-12-06 16:55:39 +0100407/*
408 Like PyObject_CallMethod, but expect a _Py_Identifier* as the
409 method name.
410*/
Serhiy Storchaka9fab79b2016-09-11 11:03:14 +0300411#endif /* !Py_LIMITED_API */
Martin v. Löwisafe55bb2011-10-09 10:38:36 +0200412
Victor Stinner2a358f82016-12-06 16:55:39 +0100413PyAPI_FUNC(PyObject *) _PyObject_CallFunction_SizeT(PyObject *callable,
414 const char *format,
415 ...);
416
417PyAPI_FUNC(PyObject *) _PyObject_CallMethod_SizeT(PyObject *obj,
418 const char *name,
419 const char *format,
420 ...);
421
Serhiy Storchaka9fab79b2016-09-11 11:03:14 +0300422#ifndef Py_LIMITED_API
Victor Stinner2a358f82016-12-06 16:55:39 +0100423PyAPI_FUNC(PyObject *) _PyObject_CallMethodId_SizeT(PyObject *obj,
424 _Py_Identifier *name,
425 const char *format,
426 ...);
Serhiy Storchaka9fab79b2016-09-11 11:03:14 +0300427#endif /* !Py_LIMITED_API */
Guido van Rossuma8275371995-07-18 14:07:00 +0000428
Victor Stinner2a358f82016-12-06 16:55:39 +0100429/* Call a callable Python object 'callable' with a variable number of C
430 arguments. The C arguments are provided as PyObject* values, terminated
431 by a NULL.
Victor Stinner2d0eb652016-12-06 16:27:24 +0100432
Victor Stinner2a358f82016-12-06 16:55:39 +0100433 Returns the result of the call on success, or NULL on failure.
Victor Stinner2d0eb652016-12-06 16:27:24 +0100434
Victor Stinner2a358f82016-12-06 16:55:39 +0100435 This is the equivalent of the Python expression:
436 callable(arg1, arg2, ...) */
437PyAPI_FUNC(PyObject *) PyObject_CallFunctionObjArgs(PyObject *callable,
438 ...);
Fred Drakeb421b8c2001-10-26 16:21:32 +0000439
Victor Stinner2a358f82016-12-06 16:55:39 +0100440 /*
441Call the method named 'name' of object 'obj' with a variable number of
442C arguments. The C arguments are provided as PyObject *
443values, terminated by NULL. Returns the result of the call
444on success, or NULL on failure. This is the equivalent of
445the Python expression: obj.name(args).
446 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000447
Victor Stinner2a358f82016-12-06 16:55:39 +0100448PyAPI_FUNC(PyObject *) PyObject_CallMethodObjArgs(
449 PyObject *obj,
450 PyObject *name,
451 ...);
452
Victor Stinner2d0eb652016-12-06 16:27:24 +0100453#ifndef Py_LIMITED_API
Victor Stinner2a358f82016-12-06 16:55:39 +0100454PyAPI_FUNC(PyObject *) _PyObject_CallMethodIdObjArgs(
455 PyObject *obj,
456 struct _Py_Identifier *name,
457 ...);
Victor Stinner2d0eb652016-12-06 16:27:24 +0100458#endif /* !Py_LIMITED_API */
459
460
Victor Stinner2a358f82016-12-06 16:55:39 +0100461/* Implemented elsewhere:
Guido van Rossuma8275371995-07-18 14:07:00 +0000462
Victor Stinner2a358f82016-12-06 16:55:39 +0100463long PyObject_Hash(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000464
Victor Stinner2a358f82016-12-06 16:55:39 +0100465Compute and return the hash, hash_value, of an object, o. On
466failure, return -1. This is the equivalent of the Python
467expression: hash(o).
468 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000469
470
Victor Stinner2a358f82016-12-06 16:55:39 +0100471/* Implemented elsewhere:
Guido van Rossuma8275371995-07-18 14:07:00 +0000472
Victor Stinner2a358f82016-12-06 16:55:39 +0100473int PyObject_IsTrue(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000474
Victor Stinner2a358f82016-12-06 16:55:39 +0100475Returns 1 if the object, o, is considered to be true, 0 if o is
476considered to be false and -1 on failure. This is equivalent to the
477Python expression: not not o
478 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000479
Victor Stinner2a358f82016-12-06 16:55:39 +0100480/* Implemented elsewhere:
Guido van Rossumc3d3f961998-04-09 17:53:59 +0000481
Victor Stinner2a358f82016-12-06 16:55:39 +0100482int PyObject_Not(PyObject *o);
Guido van Rossumc3d3f961998-04-09 17:53:59 +0000483
Victor Stinner2a358f82016-12-06 16:55:39 +0100484Returns 0 if the object, o, is considered to be true, 1 if o is
485considered to be false and -1 on failure. This is equivalent to the
486Python expression: not o
487 */
Guido van Rossumc3d3f961998-04-09 17:53:59 +0000488
Victor Stinner2a358f82016-12-06 16:55:39 +0100489PyAPI_FUNC(PyObject *) PyObject_Type(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000490
Victor Stinner2a358f82016-12-06 16:55:39 +0100491 /*
492On success, returns a type object corresponding to the object
493type of object o. On failure, returns NULL. This is
494equivalent to the Python expression: type(o).
495 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000496
Victor Stinner2a358f82016-12-06 16:55:39 +0100497PyAPI_FUNC(Py_ssize_t) PyObject_Size(PyObject *o);
Jeremy Hylton6253f832000-07-12 12:56:19 +0000498
Victor Stinner2a358f82016-12-06 16:55:39 +0100499 /*
500Return the size of object o. If the object, o, provides
501both sequence and mapping protocols, the sequence size is
502returned. On error, -1 is returned. This is the equivalent
503to the Python expression: len(o).
504 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000505
Victor Stinner2a358f82016-12-06 16:55:39 +0100506/* For DLL compatibility */
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +0000507#undef PyObject_Length
Victor Stinner2a358f82016-12-06 16:55:39 +0100508PyAPI_FUNC(Py_ssize_t) PyObject_Length(PyObject *o);
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +0000509#define PyObject_Length PyObject_Size
510
Armin Ronacher74b38b12012-10-07 10:29:32 +0200511#ifndef Py_LIMITED_API
Victor Stinner2a358f82016-12-06 16:55:39 +0100512PyAPI_FUNC(int) _PyObject_HasLen(PyObject *o);
513PyAPI_FUNC(Py_ssize_t) PyObject_LengthHint(PyObject *o, Py_ssize_t);
Armin Ronacher74b38b12012-10-07 10:29:32 +0200514#endif
Raymond Hettinger6b27cda2005-09-24 21:23:05 +0000515
Victor Stinner2a358f82016-12-06 16:55:39 +0100516 /*
517Guess the size of object o using len(o) or o.__length_hint__().
518If neither of those return a non-negative value, then return the
519default value. If one of the calls fails, this function returns -1.
520 */
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +0000521
Victor Stinner2a358f82016-12-06 16:55:39 +0100522PyAPI_FUNC(PyObject *) PyObject_GetItem(PyObject *o, PyObject *key);
Guido van Rossuma8275371995-07-18 14:07:00 +0000523
Victor Stinner2a358f82016-12-06 16:55:39 +0100524 /*
525Return element of o corresponding to the object, key, or NULL
526on failure. This is the equivalent of the Python expression:
527o[key].
528 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000529
Victor Stinner2a358f82016-12-06 16:55:39 +0100530PyAPI_FUNC(int) PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v);
Guido van Rossuma8275371995-07-18 14:07:00 +0000531
Victor Stinner2a358f82016-12-06 16:55:39 +0100532 /*
533Map the object key to the value v. Raise an exception and return -1
534on failure; return 0 on success. This is the equivalent of the Python
535statement o[key]=v.
536 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000537
Victor Stinner2a358f82016-12-06 16:55:39 +0100538PyAPI_FUNC(int) PyObject_DelItemString(PyObject *o, const char *key);
Martin v. Löwisb0d71d02002-01-05 10:50:30 +0000539
Victor Stinner2a358f82016-12-06 16:55:39 +0100540 /*
541Remove the mapping for object, key, from the object *o.
542Returns -1 on failure. This is equivalent to
543the Python statement: del o[key].
544 */
Martin v. Löwisb0d71d02002-01-05 10:50:30 +0000545
Victor Stinner2a358f82016-12-06 16:55:39 +0100546PyAPI_FUNC(int) PyObject_DelItem(PyObject *o, PyObject *key);
Guido van Rossum6cdc6f41996-08-21 17:41:54 +0000547
Victor Stinner2a358f82016-12-06 16:55:39 +0100548 /*
549Delete the mapping for key from *o. Returns -1 on failure.
550This is the equivalent of the Python statement: del o[key].
551 */
Guido van Rossum6cdc6f41996-08-21 17:41:54 +0000552
Victor Stinner2a358f82016-12-06 16:55:39 +0100553/* old buffer API
554 FIXME: usage of these should all be replaced in Python itself
555 but for backwards compatibility we will implement them.
556 Their usage without a corresponding "unlock" mechanism
557 may create issues (but they would already be there). */
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000558
Victor Stinner2a358f82016-12-06 16:55:39 +0100559PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj,
560 const char **buffer,
561 Py_ssize_t *buffer_len)
562 Py_DEPRECATED(3.0);
Guido van Rossumfd9eed32000-03-10 22:35:06 +0000563
Victor Stinner2a358f82016-12-06 16:55:39 +0100564 /*
565Takes an arbitrary object which must support the (character,
566single segment) buffer interface and returns a pointer to a
567read-only memory location useable as character based input
568for subsequent processing.
Guido van Rossumfd9eed32000-03-10 22:35:06 +0000569
Victor Stinner2a358f82016-12-06 16:55:39 +01005700 is returned on success. buffer and buffer_len are only
571set in case no error occurs. Otherwise, -1 is returned and
572an exception set.
573 */
Guido van Rossumfd9eed32000-03-10 22:35:06 +0000574
Victor Stinner2a358f82016-12-06 16:55:39 +0100575PyAPI_FUNC(int) PyObject_CheckReadBuffer(PyObject *obj)
576 Py_DEPRECATED(3.0);
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000577
Victor Stinner2a358f82016-12-06 16:55:39 +0100578/*
579Checks whether an arbitrary object supports the (character,
580single segment) buffer interface. Returns 1 on success, 0
581on failure.
582*/
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000583
Victor Stinner2a358f82016-12-06 16:55:39 +0100584PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj,
585 const void **buffer,
586 Py_ssize_t *buffer_len)
587 Py_DEPRECATED(3.0);
Guido van Rossumfd9eed32000-03-10 22:35:06 +0000588
Victor Stinner2a358f82016-12-06 16:55:39 +0100589 /*
590Same as PyObject_AsCharBuffer() except that this API expects
591(readable, single segment) buffer interface and returns a
592pointer to a read-only memory location which can contain
593arbitrary data.
Guido van Rossumfd9eed32000-03-10 22:35:06 +0000594
Victor Stinner2a358f82016-12-06 16:55:39 +01005950 is returned on success. buffer and buffer_len are only
596set in case no error occurs. Otherwise, -1 is returned and
597an exception set.
598 */
Guido van Rossumfd9eed32000-03-10 22:35:06 +0000599
Victor Stinner2a358f82016-12-06 16:55:39 +0100600PyAPI_FUNC(int) PyObject_AsWriteBuffer(PyObject *obj,
601 void **buffer,
602 Py_ssize_t *buffer_len)
603 Py_DEPRECATED(3.0);
Guido van Rossumfd9eed32000-03-10 22:35:06 +0000604
Victor Stinner2a358f82016-12-06 16:55:39 +0100605 /*
606Takes an arbitrary object which must support the (writable,
607single segment) buffer interface and returns a pointer to a
608writable memory location in buffer of size buffer_len.
Guido van Rossumfd9eed32000-03-10 22:35:06 +0000609
Victor Stinner2a358f82016-12-06 16:55:39 +01006100 is returned on success. buffer and buffer_len are only
611set in case no error occurs. Otherwise, -1 is returned and
612an exception set.
613 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000614
Victor Stinner2a358f82016-12-06 16:55:39 +0100615/* new buffer API */
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000616
Martin v. Löwisc83bc3c2011-01-06 19:15:47 +0000617#ifndef Py_LIMITED_API
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000618#define PyObject_CheckBuffer(obj) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000619 (((obj)->ob_type->tp_as_buffer != NULL) && \
620 ((obj)->ob_type->tp_as_buffer->bf_getbuffer != NULL))
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000621
Victor Stinner2a358f82016-12-06 16:55:39 +0100622/* Return 1 if the getbuffer function is available, otherwise
623 return 0 */
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000624
Victor Stinner2a358f82016-12-06 16:55:39 +0100625PyAPI_FUNC(int) PyObject_GetBuffer(PyObject *obj, Py_buffer *view,
626 int flags);
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000627
Victor Stinner2a358f82016-12-06 16:55:39 +0100628/* This is a C-API version of the getbuffer function call. It checks
629 to make sure object has the required function pointer and issues the
630 call. Returns -1 and raises an error on failure and returns 0 on
631 success
632*/
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000633
Victor Stinner2a358f82016-12-06 16:55:39 +0100634PyAPI_FUNC(void *) PyBuffer_GetPointer(Py_buffer *view, Py_ssize_t *indices);
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000635
Victor Stinner2a358f82016-12-06 16:55:39 +0100636/* Get the memory area pointed to by the indices for the buffer given.
637 Note that view->ndim is the assumed size of indices
638*/
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000639
Victor Stinner2a358f82016-12-06 16:55:39 +0100640PyAPI_FUNC(int) PyBuffer_SizeFromFormat(const char *);
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000641
Victor Stinner2a358f82016-12-06 16:55:39 +0100642/* Return the implied itemsize of the data-format area from a
643 struct-style description */
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000644
645
646
Victor Stinner2a358f82016-12-06 16:55:39 +0100647/* Implementation in memoryobject.c */
648PyAPI_FUNC(int) PyBuffer_ToContiguous(void *buf, Py_buffer *view,
649 Py_ssize_t len, char order);
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000650
Victor Stinner2a358f82016-12-06 16:55:39 +0100651PyAPI_FUNC(int) PyBuffer_FromContiguous(Py_buffer *view, void *buf,
652 Py_ssize_t len, char order);
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000653
654
Victor Stinner2a358f82016-12-06 16:55:39 +0100655/* Copy len bytes of data from the contiguous chunk of memory
656 pointed to by buf into the buffer exported by obj. Return
657 0 on success and return -1 and raise a PyBuffer_Error on
658 error (i.e. the object does not have a buffer interface or
659 it is not working).
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000660
Victor Stinner2a358f82016-12-06 16:55:39 +0100661 If fort is 'F', then if the object is multi-dimensional,
662 then the data will be copied into the array in
663 Fortran-style (first dimension varies the fastest). If
664 fort is 'C', then the data will be copied into the array
665 in C-style (last dimension varies the fastest). If fort
666 is 'A', then it does not matter and the copy will be made
667 in whatever way is more efficient.
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000668
Victor Stinner2a358f82016-12-06 16:55:39 +0100669*/
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000670
Victor Stinner2a358f82016-12-06 16:55:39 +0100671PyAPI_FUNC(int) PyObject_CopyData(PyObject *dest, PyObject *src);
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000672
Victor Stinner2a358f82016-12-06 16:55:39 +0100673/* Copy the data from the src buffer to the buffer of destination
674 */
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000675
Victor Stinner2a358f82016-12-06 16:55:39 +0100676PyAPI_FUNC(int) PyBuffer_IsContiguous(const Py_buffer *view, char fort);
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000677
678
Victor Stinner2a358f82016-12-06 16:55:39 +0100679PyAPI_FUNC(void) PyBuffer_FillContiguousStrides(int ndims,
680 Py_ssize_t *shape,
681 Py_ssize_t *strides,
682 int itemsize,
683 char fort);
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000684
Victor Stinner2a358f82016-12-06 16:55:39 +0100685/* Fill the strides array with byte-strides of a contiguous
686 (Fortran-style if fort is 'F' or C-style otherwise)
687 array of the given shape with the given number of bytes
688 per element.
689*/
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000690
Victor Stinner2a358f82016-12-06 16:55:39 +0100691PyAPI_FUNC(int) PyBuffer_FillInfo(Py_buffer *view, PyObject *o, void *buf,
692 Py_ssize_t len, int readonly,
693 int flags);
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000694
Victor Stinner2a358f82016-12-06 16:55:39 +0100695/* Fills in a buffer-info structure correctly for an exporter
696 that can only share a contiguous chunk of memory of
697 "unsigned bytes" of the given length. Returns 0 on success
698 and -1 (with raising an error) on error.
699 */
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000700
Victor Stinner2a358f82016-12-06 16:55:39 +0100701PyAPI_FUNC(void) PyBuffer_Release(Py_buffer *view);
Martin v. Löwis423be952008-08-13 15:53:07 +0000702
Victor Stinner2a358f82016-12-06 16:55:39 +0100703/* Releases a Py_buffer obtained from getbuffer ParseTuple's s*.
704 */
Martin v. Löwisc83bc3c2011-01-06 19:15:47 +0000705#endif /* Py_LIMITED_API */
Travis E. Oliphantb99f7622007-08-18 11:21:56 +0000706
Victor Stinner2a358f82016-12-06 16:55:39 +0100707PyAPI_FUNC(PyObject *) PyObject_Format(PyObject* obj,
708 PyObject *format_spec);
709 /*
710Takes an arbitrary object and returns the result of
711calling obj.__format__(format_spec).
712 */
Eric Smith8fd3eba2008-02-17 19:48:00 +0000713
Guido van Rossum213c7a62001-04-23 14:08:49 +0000714/* Iterators */
715
Victor Stinner2a358f82016-12-06 16:55:39 +0100716PyAPI_FUNC(PyObject *) PyObject_GetIter(PyObject *);
717 /* Takes an object and returns an iterator for it.
718This is typically a new iterator but if the argument
719is an iterator, this returns itself. */
Guido van Rossum59d1d2b2001-04-20 19:13:02 +0000720
Guido van Rossum213c7a62001-04-23 14:08:49 +0000721#define PyIter_Check(obj) \
Amaury Forgeot d'Arcf343e012009-01-12 23:58:21 +0000722 ((obj)->ob_type->tp_iternext != NULL && \
723 (obj)->ob_type->tp_iternext != &_PyObject_NextNotImplemented)
Guido van Rossum213c7a62001-04-23 14:08:49 +0000724
Victor Stinner2a358f82016-12-06 16:55:39 +0100725PyAPI_FUNC(PyObject *) PyIter_Next(PyObject *);
726 /* Takes an iterator object and calls its tp_iternext slot,
727returning the next value. If the iterator is exhausted,
728this returns NULL without setting an exception.
729NULL with an exception means an error occurred. */
Guido van Rossum213c7a62001-04-23 14:08:49 +0000730
Guido van Rossuma8275371995-07-18 14:07:00 +0000731
Victor Stinner2a358f82016-12-06 16:55:39 +0100732/* === Number Protocol ================================================== */
Guido van Rossuma8275371995-07-18 14:07:00 +0000733
Victor Stinner2a358f82016-12-06 16:55:39 +0100734PyAPI_FUNC(int) PyNumber_Check(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000735
Victor Stinner2a358f82016-12-06 16:55:39 +0100736 /*
737Returns 1 if the object, o, provides numeric protocols, and
738false otherwise.
Guido van Rossuma8275371995-07-18 14:07:00 +0000739
Victor Stinner2a358f82016-12-06 16:55:39 +0100740This function always succeeds.
741 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000742
Victor Stinner2a358f82016-12-06 16:55:39 +0100743PyAPI_FUNC(PyObject *) PyNumber_Add(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000744
Victor Stinner2a358f82016-12-06 16:55:39 +0100745 /*
746Returns the result of adding o1 and o2, or null on failure.
747This is the equivalent of the Python expression: o1+o2.
748 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000749
Victor Stinner2a358f82016-12-06 16:55:39 +0100750PyAPI_FUNC(PyObject *) PyNumber_Subtract(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000751
Victor Stinner2a358f82016-12-06 16:55:39 +0100752 /*
753Returns the result of subtracting o2 from o1, or null on
754failure. This is the equivalent of the Python expression:
755o1-o2.
756 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000757
Victor Stinner2a358f82016-12-06 16:55:39 +0100758PyAPI_FUNC(PyObject *) PyNumber_Multiply(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000759
Victor Stinner2a358f82016-12-06 16:55:39 +0100760 /*
761Returns the result of multiplying o1 and o2, or null on
762failure. This is the equivalent of the Python expression:
763o1*o2.
764 */
Benjamin Petersond51374e2014-04-09 23:55:56 -0400765
Victor Stinner2a358f82016-12-06 16:55:39 +0100766PyAPI_FUNC(PyObject *) PyNumber_MatrixMultiply(PyObject *o1, PyObject *o2);
Benjamin Petersond51374e2014-04-09 23:55:56 -0400767
Victor Stinner2a358f82016-12-06 16:55:39 +0100768 /*
769This is the equivalent of the Python expression: o1 @ o2.
770 */
Guido van Rossum4668b002001-08-08 05:00:18 +0000771
Victor Stinner2a358f82016-12-06 16:55:39 +0100772PyAPI_FUNC(PyObject *) PyNumber_FloorDivide(PyObject *o1, PyObject *o2);
Guido van Rossum4668b002001-08-08 05:00:18 +0000773
Victor Stinner2a358f82016-12-06 16:55:39 +0100774 /*
775Returns the result of dividing o1 by o2 giving an integral result,
776or null on failure.
777This is the equivalent of the Python expression: o1//o2.
778 */
Guido van Rossum4668b002001-08-08 05:00:18 +0000779
Victor Stinner2a358f82016-12-06 16:55:39 +0100780PyAPI_FUNC(PyObject *) PyNumber_TrueDivide(PyObject *o1, PyObject *o2);
Guido van Rossum4668b002001-08-08 05:00:18 +0000781
Victor Stinner2a358f82016-12-06 16:55:39 +0100782 /*
783Returns the result of dividing o1 by o2 giving a float result,
784or null on failure.
785This is the equivalent of the Python expression: o1/o2.
786 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000787
Victor Stinner2a358f82016-12-06 16:55:39 +0100788PyAPI_FUNC(PyObject *) PyNumber_Remainder(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000789
Victor Stinner2a358f82016-12-06 16:55:39 +0100790 /*
791Returns the remainder of dividing o1 by o2, or null on
792failure. This is the equivalent of the Python expression:
793o1%o2.
794 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000795
Victor Stinner2a358f82016-12-06 16:55:39 +0100796PyAPI_FUNC(PyObject *) PyNumber_Divmod(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000797
Victor Stinner2a358f82016-12-06 16:55:39 +0100798 /*
799See the built-in function divmod. Returns NULL on failure.
800This is the equivalent of the Python expression:
801divmod(o1,o2).
802 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000803
Victor Stinner2a358f82016-12-06 16:55:39 +0100804PyAPI_FUNC(PyObject *) PyNumber_Power(PyObject *o1, PyObject *o2,
805 PyObject *o3);
Guido van Rossuma8275371995-07-18 14:07:00 +0000806
Victor Stinner2a358f82016-12-06 16:55:39 +0100807 /*
808See the built-in function pow. Returns NULL on failure.
809This is the equivalent of the Python expression:
810pow(o1,o2,o3), where o3 is optional.
811 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000812
Victor Stinner2a358f82016-12-06 16:55:39 +0100813PyAPI_FUNC(PyObject *) PyNumber_Negative(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000814
Victor Stinner2a358f82016-12-06 16:55:39 +0100815 /*
816Returns the negation of o on success, or null on failure.
817This is the equivalent of the Python expression: -o.
818 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000819
Victor Stinner2a358f82016-12-06 16:55:39 +0100820PyAPI_FUNC(PyObject *) PyNumber_Positive(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000821
Victor Stinner2a358f82016-12-06 16:55:39 +0100822 /*
823Returns the (what?) of o on success, or NULL on failure.
824This is the equivalent of the Python expression: +o.
825 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000826
Victor Stinner2a358f82016-12-06 16:55:39 +0100827PyAPI_FUNC(PyObject *) PyNumber_Absolute(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000828
Victor Stinner2a358f82016-12-06 16:55:39 +0100829 /*
830Returns the absolute value of o, or null on failure. This is
831the equivalent of the Python expression: abs(o).
832 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000833
Victor Stinner2a358f82016-12-06 16:55:39 +0100834PyAPI_FUNC(PyObject *) PyNumber_Invert(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000835
Victor Stinner2a358f82016-12-06 16:55:39 +0100836 /*
837Returns the bitwise negation of o on success, or NULL on
838failure. This is the equivalent of the Python expression:
839~o.
840 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000841
Victor Stinner2a358f82016-12-06 16:55:39 +0100842PyAPI_FUNC(PyObject *) PyNumber_Lshift(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000843
Victor Stinner2a358f82016-12-06 16:55:39 +0100844 /*
845Returns the result of left shifting o1 by o2 on success, or
846NULL on failure. This is the equivalent of the Python
847expression: o1 << o2.
848 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000849
Victor Stinner2a358f82016-12-06 16:55:39 +0100850PyAPI_FUNC(PyObject *) PyNumber_Rshift(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000851
Victor Stinner2a358f82016-12-06 16:55:39 +0100852 /*
853Returns the result of right shifting o1 by o2 on success, or
854NULL on failure. This is the equivalent of the Python
855expression: o1 >> o2.
856 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000857
Victor Stinner2a358f82016-12-06 16:55:39 +0100858PyAPI_FUNC(PyObject *) PyNumber_And(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000859
Victor Stinner2a358f82016-12-06 16:55:39 +0100860 /*
861Returns the result of bitwise and of o1 and o2 on success, or
862NULL on failure. This is the equivalent of the Python
863expression: o1&o2.
Guido van Rossuma8275371995-07-18 14:07:00 +0000864
Victor Stinner2a358f82016-12-06 16:55:39 +0100865 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000866
Victor Stinner2a358f82016-12-06 16:55:39 +0100867PyAPI_FUNC(PyObject *) PyNumber_Xor(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000868
Victor Stinner2a358f82016-12-06 16:55:39 +0100869 /*
870Returns the bitwise exclusive or of o1 by o2 on success, or
871NULL on failure. This is the equivalent of the Python
872expression: o1^o2.
873 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000874
Victor Stinner2a358f82016-12-06 16:55:39 +0100875PyAPI_FUNC(PyObject *) PyNumber_Or(PyObject *o1, PyObject *o2);
876
877 /*
878Returns the result of bitwise or on o1 and o2 on success, or
879NULL on failure. This is the equivalent of the Python
880expression: o1|o2.
881 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000882
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000883#define PyIndex_Check(obj) \
884 ((obj)->ob_type->tp_as_number != NULL && \
885 (obj)->ob_type->tp_as_number->nb_index != NULL)
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000886
Victor Stinner2a358f82016-12-06 16:55:39 +0100887PyAPI_FUNC(PyObject *) PyNumber_Index(PyObject *o);
Guido van Rossum38fff8c2006-03-07 18:50:55 +0000888
Victor Stinner2a358f82016-12-06 16:55:39 +0100889 /*
890Returns the object converted to a Python int
891or NULL with an error raised on failure.
892 */
Guido van Rossum38fff8c2006-03-07 18:50:55 +0000893
Victor Stinner2a358f82016-12-06 16:55:39 +0100894PyAPI_FUNC(Py_ssize_t) PyNumber_AsSsize_t(PyObject *o, PyObject *exc);
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000895
Victor Stinner2a358f82016-12-06 16:55:39 +0100896 /*
897Returns the object converted to Py_ssize_t by going through
898PyNumber_Index first. If an overflow error occurs while
899converting the int to Py_ssize_t, then the second argument
900is the error-type to return. If it is NULL, then the overflow error
901is cleared and the value is clipped.
902 */
Guido van Rossum38fff8c2006-03-07 18:50:55 +0000903
Victor Stinner2a358f82016-12-06 16:55:39 +0100904PyAPI_FUNC(PyObject *) PyNumber_Long(PyObject *o);
Mark Dickinsond7467682009-01-10 22:14:33 +0000905
Victor Stinner2a358f82016-12-06 16:55:39 +0100906 /*
907Returns the o converted to an integer object on success, or
908NULL on failure. This is the equivalent of the Python
909expression: int(o).
910 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000911
Victor Stinner2a358f82016-12-06 16:55:39 +0100912PyAPI_FUNC(PyObject *) PyNumber_Float(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000913
Victor Stinner2a358f82016-12-06 16:55:39 +0100914 /*
915Returns the o converted to a float object on success, or NULL
916on failure. This is the equivalent of the Python expression:
917float(o).
918 */
919
Antoine Pitrouf95a1b32010-05-09 15:52:27 +0000920
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000921/* In-place variants of (some of) the above number protocol functions */
922
Victor Stinner2a358f82016-12-06 16:55:39 +0100923PyAPI_FUNC(PyObject *) PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000924
Victor Stinner2a358f82016-12-06 16:55:39 +0100925 /*
926Returns the result of adding o2 to o1, possibly in-place, or null
927on failure. This is the equivalent of the Python expression:
928o1 += o2.
929 */
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000930
Victor Stinner2a358f82016-12-06 16:55:39 +0100931PyAPI_FUNC(PyObject *) PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000932
Victor Stinner2a358f82016-12-06 16:55:39 +0100933 /*
934Returns the result of subtracting o2 from o1, possibly in-place or
935null on failure. This is the equivalent of the Python expression:
936o1 -= o2.
937 */
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000938
Victor Stinner2a358f82016-12-06 16:55:39 +0100939PyAPI_FUNC(PyObject *) PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000940
Victor Stinner2a358f82016-12-06 16:55:39 +0100941 /*
942Returns the result of multiplying o1 by o2, possibly in-place, or
943null on failure. This is the equivalent of the Python expression:
944o1 *= o2.
945 */
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000946
Victor Stinner2a358f82016-12-06 16:55:39 +0100947PyAPI_FUNC(PyObject *) PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2);
Benjamin Petersond51374e2014-04-09 23:55:56 -0400948
Victor Stinner2a358f82016-12-06 16:55:39 +0100949 /*
950This is the equivalent of the Python expression: o1 @= o2.
951 */
Benjamin Petersond51374e2014-04-09 23:55:56 -0400952
Victor Stinner2a358f82016-12-06 16:55:39 +0100953PyAPI_FUNC(PyObject *) PyNumber_InPlaceFloorDivide(PyObject *o1,
954 PyObject *o2);
Guido van Rossum4668b002001-08-08 05:00:18 +0000955
Victor Stinner2a358f82016-12-06 16:55:39 +0100956 /*
957Returns the result of dividing o1 by o2 giving an integral result,
958possibly in-place, or null on failure.
959This is the equivalent of the Python expression:
960o1 /= o2.
961 */
Guido van Rossum4668b002001-08-08 05:00:18 +0000962
Victor Stinner2a358f82016-12-06 16:55:39 +0100963PyAPI_FUNC(PyObject *) PyNumber_InPlaceTrueDivide(PyObject *o1,
964 PyObject *o2);
Guido van Rossum4668b002001-08-08 05:00:18 +0000965
Victor Stinner2a358f82016-12-06 16:55:39 +0100966 /*
967Returns the result of dividing o1 by o2 giving a float result,
968possibly in-place, or null on failure.
969This is the equivalent of the Python expression:
970o1 /= o2.
971 */
Guido van Rossum4668b002001-08-08 05:00:18 +0000972
Victor Stinner2a358f82016-12-06 16:55:39 +0100973PyAPI_FUNC(PyObject *) PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000974
Victor Stinner2a358f82016-12-06 16:55:39 +0100975 /*
976Returns the remainder of dividing o1 by o2, possibly in-place, or
977null on failure. This is the equivalent of the Python expression:
978o1 %= o2.
979 */
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000980
Victor Stinner2a358f82016-12-06 16:55:39 +0100981PyAPI_FUNC(PyObject *) PyNumber_InPlacePower(PyObject *o1, PyObject *o2,
982 PyObject *o3);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000983
Victor Stinner2a358f82016-12-06 16:55:39 +0100984 /*
985Returns the result of raising o1 to the power of o2, possibly
986in-place, or null on failure. This is the equivalent of the Python
987expression: o1 **= o2, or pow(o1, o2, o3) if o3 is present.
988 */
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000989
Victor Stinner2a358f82016-12-06 16:55:39 +0100990PyAPI_FUNC(PyObject *) PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000991
Victor Stinner2a358f82016-12-06 16:55:39 +0100992 /*
993Returns the result of left shifting o1 by o2, possibly in-place, or
994null on failure. This is the equivalent of the Python expression:
995o1 <<= o2.
996 */
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000997
Victor Stinner2a358f82016-12-06 16:55:39 +0100998PyAPI_FUNC(PyObject *) PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000999
Victor Stinner2a358f82016-12-06 16:55:39 +01001000 /*
1001Returns the result of right shifting o1 by o2, possibly in-place or
1002null on failure. This is the equivalent of the Python expression:
1003o1 >>= o2.
1004 */
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001005
Victor Stinner2a358f82016-12-06 16:55:39 +01001006PyAPI_FUNC(PyObject *) PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001007
Victor Stinner2a358f82016-12-06 16:55:39 +01001008 /*
1009Returns the result of bitwise and of o1 and o2, possibly in-place,
1010or null on failure. This is the equivalent of the Python
1011expression: o1 &= o2.
1012 */
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001013
Victor Stinner2a358f82016-12-06 16:55:39 +01001014PyAPI_FUNC(PyObject *) PyNumber_InPlaceXor(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001015
Victor Stinner2a358f82016-12-06 16:55:39 +01001016 /*
1017Returns the bitwise exclusive or of o1 by o2, possibly in-place, or
1018null on failure. This is the equivalent of the Python expression:
1019o1 ^= o2.
1020 */
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001021
Victor Stinner2a358f82016-12-06 16:55:39 +01001022PyAPI_FUNC(PyObject *) PyNumber_InPlaceOr(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001023
Victor Stinner2a358f82016-12-06 16:55:39 +01001024 /*
1025Returns the result of bitwise or of o1 and o2, possibly in-place,
1026or null on failure. This is the equivalent of the Python
1027expression: o1 |= o2.
1028 */
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001029
Victor Stinner2a358f82016-12-06 16:55:39 +01001030PyAPI_FUNC(PyObject *) PyNumber_ToBase(PyObject *n, int base);
Guido van Rossumcd16bf62007-06-13 18:07:49 +00001031
Victor Stinner2a358f82016-12-06 16:55:39 +01001032 /*
1033Returns the integer n converted to a string with a base, with a base
1034marker of 0b, 0o or 0x prefixed if applicable.
1035If n is not an int object, it is converted with PyNumber_Index first.
1036 */
Guido van Rossumcd16bf62007-06-13 18:07:49 +00001037
Guido van Rossuma8275371995-07-18 14:07:00 +00001038
Victor Stinner2a358f82016-12-06 16:55:39 +01001039/* === Sequence protocol ================================================ */
Guido van Rossuma8275371995-07-18 14:07:00 +00001040
Victor Stinner2a358f82016-12-06 16:55:39 +01001041PyAPI_FUNC(int) PySequence_Check(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +00001042
Victor Stinner2a358f82016-12-06 16:55:39 +01001043 /*
1044Return 1 if the object provides sequence protocol, and zero
1045otherwise.
Guido van Rossuma8275371995-07-18 14:07:00 +00001046
Victor Stinner2a358f82016-12-06 16:55:39 +01001047This function always succeeds.
1048 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001049
Victor Stinner2a358f82016-12-06 16:55:39 +01001050PyAPI_FUNC(Py_ssize_t) PySequence_Size(PyObject *o);
Jeremy Hylton6253f832000-07-12 12:56:19 +00001051
Victor Stinner2a358f82016-12-06 16:55:39 +01001052 /*
1053Return the size of sequence object o, or -1 on failure.
1054 */
Guido van Rossum4f4ce681996-07-21 02:22:56 +00001055
Victor Stinner2a358f82016-12-06 16:55:39 +01001056/* For DLL compatibility */
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +00001057#undef PySequence_Length
Martin v. Löwis18e16552006-02-15 17:27:45 +00001058 PyAPI_FUNC(Py_ssize_t) PySequence_Length(PyObject *o);
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +00001059#define PySequence_Length PySequence_Size
1060
1061
Victor Stinner2a358f82016-12-06 16:55:39 +01001062PyAPI_FUNC(PyObject *) PySequence_Concat(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +00001063
Victor Stinner2a358f82016-12-06 16:55:39 +01001064 /*
1065Return the concatenation of o1 and o2 on success, and NULL on
1066failure. This is the equivalent of the Python
1067expression: o1+o2.
1068 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001069
Victor Stinner2a358f82016-12-06 16:55:39 +01001070PyAPI_FUNC(PyObject *) PySequence_Repeat(PyObject *o, Py_ssize_t count);
Guido van Rossuma8275371995-07-18 14:07:00 +00001071
Victor Stinner2a358f82016-12-06 16:55:39 +01001072 /*
1073Return the result of repeating sequence object o count times,
1074or NULL on failure. This is the equivalent of the Python
1075expression: o1*count.
1076 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001077
Victor Stinner2a358f82016-12-06 16:55:39 +01001078PyAPI_FUNC(PyObject *) PySequence_GetItem(PyObject *o, Py_ssize_t i);
Guido van Rossuma8275371995-07-18 14:07:00 +00001079
Victor Stinner2a358f82016-12-06 16:55:39 +01001080 /*
1081Return the ith element of o, or NULL on failure. This is the
1082equivalent of the Python expression: o[i].
1083 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001084
Victor Stinner2a358f82016-12-06 16:55:39 +01001085PyAPI_FUNC(PyObject *) PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2);
Guido van Rossuma8275371995-07-18 14:07:00 +00001086
Victor Stinner2a358f82016-12-06 16:55:39 +01001087 /*
1088Return the slice of sequence object o between i1 and i2, or
1089NULL on failure. This is the equivalent of the Python
1090expression: o[i1:i2].
1091 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001092
Victor Stinner2a358f82016-12-06 16:55:39 +01001093PyAPI_FUNC(int) PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v);
Guido van Rossuma8275371995-07-18 14:07:00 +00001094
Victor Stinner2a358f82016-12-06 16:55:39 +01001095 /*
1096Assign object v to the ith element of o. Raise an exception and return
1097-1 on failure; return 0 on success. This is the equivalent of the
1098Python statement o[i]=v.
1099 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001100
Victor Stinner2a358f82016-12-06 16:55:39 +01001101PyAPI_FUNC(int) PySequence_DelItem(PyObject *o, Py_ssize_t i);
Guido van Rossum6cdc6f41996-08-21 17:41:54 +00001102
Victor Stinner2a358f82016-12-06 16:55:39 +01001103 /*
1104Delete the ith element of object v. Returns
1105-1 on failure. This is the equivalent of the Python
1106statement: del o[i].
1107 */
Guido van Rossum6cdc6f41996-08-21 17:41:54 +00001108
Victor Stinner2a358f82016-12-06 16:55:39 +01001109PyAPI_FUNC(int) PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2,
1110 PyObject *v);
Guido van Rossuma8275371995-07-18 14:07:00 +00001111
Victor Stinner2a358f82016-12-06 16:55:39 +01001112 /*
1113Assign the sequence object, v, to the slice in sequence
1114object, o, from i1 to i2. Returns -1 on failure. This is the
1115equivalent of the Python statement: o[i1:i2]=v.
1116 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001117
Victor Stinner2a358f82016-12-06 16:55:39 +01001118PyAPI_FUNC(int) PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2);
Guido van Rossum6cdc6f41996-08-21 17:41:54 +00001119
Victor Stinner2a358f82016-12-06 16:55:39 +01001120 /*
1121Delete the slice in sequence object, o, from i1 to i2.
1122Returns -1 on failure. This is the equivalent of the Python
1123statement: del o[i1:i2].
1124 */
Guido van Rossum6cdc6f41996-08-21 17:41:54 +00001125
Victor Stinner2a358f82016-12-06 16:55:39 +01001126PyAPI_FUNC(PyObject *) PySequence_Tuple(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +00001127
Victor Stinner2a358f82016-12-06 16:55:39 +01001128 /*
1129Returns the sequence, o, as a tuple on success, and NULL on failure.
1130This is equivalent to the Python expression: tuple(o)
1131 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001132
Andrew M. Kuchling74042d62000-06-18 18:43:14 +00001133
Victor Stinner2a358f82016-12-06 16:55:39 +01001134PyAPI_FUNC(PyObject *) PySequence_List(PyObject *o);
1135 /*
1136Returns the sequence, o, as a list on success, and NULL on failure.
1137This is equivalent to the Python expression: list(o)
1138 */
Guido van Rossumf39fc431997-03-04 18:31:47 +00001139
Victor Stinner2a358f82016-12-06 16:55:39 +01001140PyAPI_FUNC(PyObject *) PySequence_Fast(PyObject *o, const char* m);
1141 /*
1142Return the sequence, o, as a list, unless it's already a
1143tuple or list. Use PySequence_Fast_GET_ITEM to access the
1144members of this list, and PySequence_Fast_GET_SIZE to get its length.
Andrew M. Kuchling74042d62000-06-18 18:43:14 +00001145
Victor Stinner2a358f82016-12-06 16:55:39 +01001146Returns NULL on failure. If the object does not support iteration,
1147raises a TypeError exception with m as the message text.
1148 */
Andrew M. Kuchling74042d62000-06-18 18:43:14 +00001149
Tim Peters1fc240e2001-10-26 05:06:50 +00001150#define PySequence_Fast_GET_SIZE(o) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +00001151 (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
Tim Peters1fc240e2001-10-26 05:06:50 +00001152 /*
Antoine Pitrouf95a1b32010-05-09 15:52:27 +00001153 Return the size of o, assuming that o was returned by
1154 PySequence_Fast and is not NULL.
Tim Peters1fc240e2001-10-26 05:06:50 +00001155 */
1156
Andrew M. Kuchling74042d62000-06-18 18:43:14 +00001157#define PySequence_Fast_GET_ITEM(o, i)\
1158 (PyList_Check(o) ? PyList_GET_ITEM(o, i) : PyTuple_GET_ITEM(o, i))
Andrew M. Kuchling74042d62000-06-18 18:43:14 +00001159 /*
Antoine Pitrouf95a1b32010-05-09 15:52:27 +00001160 Return the ith element of o, assuming that o was returned by
1161 PySequence_Fast, and that i is within bounds.
Andrew M. Kuchling74042d62000-06-18 18:43:14 +00001162 */
1163
Martin v. Löwis01f94bd2002-05-08 08:44:21 +00001164#define PySequence_ITEM(o, i)\
Antoine Pitrouf95a1b32010-05-09 15:52:27 +00001165 ( Py_TYPE(o)->tp_as_sequence->sq_item(o, i) )
Martin v. Löwis01f94bd2002-05-08 08:44:21 +00001166 /* Assume tp_as_sequence and sq_item exist and that i does not
Antoine Pitrouf95a1b32010-05-09 15:52:27 +00001167 need to be corrected for a negative index
1168 */
Martin v. Löwis01f94bd2002-05-08 08:44:21 +00001169
Raymond Hettinger42bec932004-03-12 16:38:17 +00001170#define PySequence_Fast_ITEMS(sf) \
Antoine Pitrouf95a1b32010-05-09 15:52:27 +00001171 (PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \
1172 : ((PyTupleObject *)(sf))->ob_item)
Victor Stinner2a358f82016-12-06 16:55:39 +01001173/* Return a pointer to the underlying item array for
1174 an object retured by PySequence_Fast */
Raymond Hettingerc1e4f9d2004-03-12 08:04:00 +00001175
Victor Stinner2a358f82016-12-06 16:55:39 +01001176PyAPI_FUNC(Py_ssize_t) PySequence_Count(PyObject *o, PyObject *value);
Guido van Rossuma8275371995-07-18 14:07:00 +00001177
Victor Stinner2a358f82016-12-06 16:55:39 +01001178 /*
1179Return the number of occurrences on value on o, that is,
1180return the number of keys for which o[key]==value. On
1181failure, return -1. This is equivalent to the Python
1182expression: o.count(value).
1183 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001184
Victor Stinner2a358f82016-12-06 16:55:39 +01001185PyAPI_FUNC(int) PySequence_Contains(PyObject *seq, PyObject *ob);
1186 /*
1187Return -1 if error; 1 if ob in seq; 0 if ob not in seq.
1188Use __contains__ if possible, else _PySequence_IterSearch().
1189 */
Tim Peterscb8d3682001-05-05 21:05:01 +00001190
Martin v. Löwis4d0d4712010-12-03 20:14:31 +00001191#ifndef Py_LIMITED_API
Tim Peters16a77ad2001-09-08 04:00:12 +00001192#define PY_ITERSEARCH_COUNT 1
1193#define PY_ITERSEARCH_INDEX 2
1194#define PY_ITERSEARCH_CONTAINS 3
Victor Stinner2a358f82016-12-06 16:55:39 +01001195PyAPI_FUNC(Py_ssize_t) _PySequence_IterSearch(PyObject *seq,
1196 PyObject *obj, int operation);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +00001197#endif
Victor Stinner2a358f82016-12-06 16:55:39 +01001198/*
1199 Iterate over seq. Result depends on the operation:
1200 PY_ITERSEARCH_COUNT: return # of times obj appears in seq; -1 if
1201 error.
1202 PY_ITERSEARCH_INDEX: return 0-based index of first occurrence of
1203 obj in seq; set ValueError and return -1 if none found;
1204 also return -1 on error.
1205 PY_ITERSEARCH_CONTAINS: return 1 if obj in seq, else 0; -1 on
1206 error.
1207*/
Guido van Rossum83684531999-03-17 18:44:39 +00001208
1209/* For DLL-level backwards compatibility */
1210#undef PySequence_In
Victor Stinner2a358f82016-12-06 16:55:39 +01001211PyAPI_FUNC(int) PySequence_In(PyObject *o, PyObject *value);
Guido van Rossum83684531999-03-17 18:44:39 +00001212
1213/* For source-level backwards compatibility */
Guido van Rossumf1536db1998-08-23 22:06:59 +00001214#define PySequence_In PySequence_Contains
Guido van Rossuma8275371995-07-18 14:07:00 +00001215
Victor Stinner2a358f82016-12-06 16:55:39 +01001216 /*
1217Determine if o contains value. If an item in o is equal to
1218X, return 1, otherwise return 0. On error, return -1. This
1219is equivalent to the Python expression: value in o.
1220 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001221
Victor Stinner2a358f82016-12-06 16:55:39 +01001222PyAPI_FUNC(Py_ssize_t) PySequence_Index(PyObject *o, PyObject *value);
Guido van Rossuma8275371995-07-18 14:07:00 +00001223
Victor Stinner2a358f82016-12-06 16:55:39 +01001224 /*
1225Return the first index for which o[i]=value. On error,
1226return -1. This is equivalent to the Python
1227expression: o.index(value).
1228 */
1229
Guido van Rossuma8275371995-07-18 14:07:00 +00001230
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001231/* In-place versions of some of the above Sequence functions. */
1232
Victor Stinner2a358f82016-12-06 16:55:39 +01001233PyAPI_FUNC(PyObject *) PySequence_InPlaceConcat(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001234
Victor Stinner2a358f82016-12-06 16:55:39 +01001235 /*
1236Append o2 to o1, in-place when possible. Return the resulting
1237object, which could be o1, or NULL on failure. This is the
1238equivalent of the Python expression: o1 += o2.
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001239
Victor Stinner2a358f82016-12-06 16:55:39 +01001240 */
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001241
Victor Stinner2a358f82016-12-06 16:55:39 +01001242PyAPI_FUNC(PyObject *) PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001243
Victor Stinner2a358f82016-12-06 16:55:39 +01001244 /*
1245Repeat o1 by count, in-place when possible. Return the resulting
1246object, which could be o1, or NULL on failure. This is the
1247equivalent of the Python expression: o1 *= count.
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001248
Victor Stinner2a358f82016-12-06 16:55:39 +01001249 */
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001250
Guido van Rossuma8275371995-07-18 14:07:00 +00001251/* Mapping protocol:*/
1252
Victor Stinner2a358f82016-12-06 16:55:39 +01001253PyAPI_FUNC(int) PyMapping_Check(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +00001254
Victor Stinner2a358f82016-12-06 16:55:39 +01001255 /*
1256Return 1 if the object provides mapping protocol, and zero
1257otherwise.
Guido van Rossuma8275371995-07-18 14:07:00 +00001258
Victor Stinner2a358f82016-12-06 16:55:39 +01001259This function always succeeds.
1260 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001261
Victor Stinner2a358f82016-12-06 16:55:39 +01001262PyAPI_FUNC(Py_ssize_t) PyMapping_Size(PyObject *o);
Jeremy Hylton6253f832000-07-12 12:56:19 +00001263
Victor Stinner2a358f82016-12-06 16:55:39 +01001264 /*
1265Returns the number of keys in object o on success, and -1 on
1266failure. For objects that do not provide sequence protocol,
1267this is equivalent to the Python expression: len(o).
1268 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001269
Victor Stinner2a358f82016-12-06 16:55:39 +01001270/* For DLL compatibility */
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +00001271#undef PyMapping_Length
Victor Stinner2a358f82016-12-06 16:55:39 +01001272PyAPI_FUNC(Py_ssize_t) PyMapping_Length(PyObject *o);
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +00001273#define PyMapping_Length PyMapping_Size
1274
1275
Victor Stinner2a358f82016-12-06 16:55:39 +01001276/* implemented as a macro:
Guido van Rossuma25e5e91996-09-06 13:48:38 +00001277
Victor Stinner2a358f82016-12-06 16:55:39 +01001278int PyMapping_DelItemString(PyObject *o, const char *key);
Guido van Rossuma8275371995-07-18 14:07:00 +00001279
Victor Stinner2a358f82016-12-06 16:55:39 +01001280Remove the mapping for object, key, from the object *o.
1281Returns -1 on failure. This is equivalent to
1282the Python statement: del o[key].
1283 */
Jeremy Hylton7c7ee5f2001-11-28 16:20:07 +00001284#define PyMapping_DelItemString(O,K) PyObject_DelItemString((O),(K))
Guido van Rossuma25e5e91996-09-06 13:48:38 +00001285
Victor Stinner2a358f82016-12-06 16:55:39 +01001286/* implemented as a macro:
Guido van Rossuma8275371995-07-18 14:07:00 +00001287
Victor Stinner2a358f82016-12-06 16:55:39 +01001288int PyMapping_DelItem(PyObject *o, PyObject *key);
Guido van Rossuma8275371995-07-18 14:07:00 +00001289
Victor Stinner2a358f82016-12-06 16:55:39 +01001290Remove the mapping for object, key, from the object *o.
1291Returns -1 on failure. This is equivalent to
1292the Python statement: del o[key].
1293 */
Jeremy Hylton7c7ee5f2001-11-28 16:20:07 +00001294#define PyMapping_DelItem(O,K) PyObject_DelItem((O),(K))
Guido van Rossuma8275371995-07-18 14:07:00 +00001295
Victor Stinner2a358f82016-12-06 16:55:39 +01001296PyAPI_FUNC(int) PyMapping_HasKeyString(PyObject *o, const char *key);
Guido van Rossuma8275371995-07-18 14:07:00 +00001297
Victor Stinner2a358f82016-12-06 16:55:39 +01001298 /*
1299On success, return 1 if the mapping object has the key, key,
1300and 0 otherwise. This is equivalent to the Python expression:
1301key in o.
Guido van Rossuma8275371995-07-18 14:07:00 +00001302
Victor Stinner2a358f82016-12-06 16:55:39 +01001303This function always succeeds.
1304 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001305
Victor Stinner2a358f82016-12-06 16:55:39 +01001306PyAPI_FUNC(int) PyMapping_HasKey(PyObject *o, PyObject *key);
Guido van Rossuma8275371995-07-18 14:07:00 +00001307
Victor Stinner2a358f82016-12-06 16:55:39 +01001308 /*
1309Return 1 if the mapping object has the key, key,
1310and 0 otherwise. This is equivalent to the Python expression:
1311key in o.
Guido van Rossuma8275371995-07-18 14:07:00 +00001312
Victor Stinner2a358f82016-12-06 16:55:39 +01001313This function always succeeds.
Guido van Rossuma8275371995-07-18 14:07:00 +00001314
Victor Stinner2a358f82016-12-06 16:55:39 +01001315 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001316
Victor Stinner2a358f82016-12-06 16:55:39 +01001317PyAPI_FUNC(PyObject *) PyMapping_Keys(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +00001318
Victor Stinner2a358f82016-12-06 16:55:39 +01001319 /*
1320On success, return a list or tuple of the keys in object o.
1321On failure, return NULL.
1322 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001323
Victor Stinner2a358f82016-12-06 16:55:39 +01001324PyAPI_FUNC(PyObject *) PyMapping_Values(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +00001325
Victor Stinner2a358f82016-12-06 16:55:39 +01001326 /*
1327On success, return a list or tuple of the values in object o.
1328On failure, return NULL.
1329 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001330
Victor Stinner2a358f82016-12-06 16:55:39 +01001331PyAPI_FUNC(PyObject *) PyMapping_Items(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +00001332
Victor Stinner2a358f82016-12-06 16:55:39 +01001333 /*
1334On success, return a list or tuple of the items in object o,
1335where each item is a tuple containing a key-value pair.
1336On failure, return NULL.
Guido van Rossuma8275371995-07-18 14:07:00 +00001337
Victor Stinner2a358f82016-12-06 16:55:39 +01001338 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001339
Victor Stinner2a358f82016-12-06 16:55:39 +01001340PyAPI_FUNC(PyObject *) PyMapping_GetItemString(PyObject *o,
1341 const char *key);
Guido van Rossuma8275371995-07-18 14:07:00 +00001342
Victor Stinner2a358f82016-12-06 16:55:39 +01001343 /*
1344Return element of o corresponding to the object, key, or NULL
1345on failure. This is the equivalent of the Python expression:
1346o[key].
1347 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001348
Victor Stinner2a358f82016-12-06 16:55:39 +01001349PyAPI_FUNC(int) PyMapping_SetItemString(PyObject *o, const char *key,
1350 PyObject *value);
Guido van Rossuma8275371995-07-18 14:07:00 +00001351
Victor Stinner2a358f82016-12-06 16:55:39 +01001352 /*
1353Map the object, key, to the value, v. Returns
1354-1 on failure. This is the equivalent of the Python
1355statement: o[key]=v.
1356 */
Guido van Rossuma8275371995-07-18 14:07:00 +00001357
1358
Mark Hammond91a681d2002-08-12 07:21:58 +00001359PyAPI_FUNC(int) PyObject_IsInstance(PyObject *object, PyObject *typeorclass);
Guido van Rossum823649d2001-03-21 18:40:58 +00001360 /* isinstance(object, typeorclass) */
1361
Mark Hammond91a681d2002-08-12 07:21:58 +00001362PyAPI_FUNC(int) PyObject_IsSubclass(PyObject *object, PyObject *typeorclass);
Guido van Rossum823649d2001-03-21 18:40:58 +00001363 /* issubclass(object, typeorclass) */
1364
1365
Martin v. Löwis4d0d4712010-12-03 20:14:31 +00001366#ifndef Py_LIMITED_API
Antoine Pitrouec569b72008-08-26 22:40:48 +00001367PyAPI_FUNC(int) _PyObject_RealIsInstance(PyObject *inst, PyObject *cls);
1368
1369PyAPI_FUNC(int) _PyObject_RealIsSubclass(PyObject *derived, PyObject *cls);
1370
Gregory P. Smithfb94c5f2010-03-14 06:49:55 +00001371PyAPI_FUNC(char *const *) _PySequence_BytesToCharpArray(PyObject* self);
1372
1373PyAPI_FUNC(void) _Py_FreeCharPArray(char *const array[]);
Antoine Pitrouec569b72008-08-26 22:40:48 +00001374
Antoine Pitrouf68c2a72010-09-01 12:58:21 +00001375/* For internal use by buffer API functions */
1376PyAPI_FUNC(void) _Py_add_one_to_index_F(int nd, Py_ssize_t *index,
1377 const Py_ssize_t *shape);
1378PyAPI_FUNC(void) _Py_add_one_to_index_C(int nd, Py_ssize_t *index,
1379 const Py_ssize_t *shape);
Serhiy Storchaka9fab79b2016-09-11 11:03:14 +03001380#endif /* !Py_LIMITED_API */
Antoine Pitrouf68c2a72010-09-01 12:58:21 +00001381
1382
Guido van Rossum8ca687a1995-09-18 21:20:02 +00001383#ifdef __cplusplus
1384}
1385#endif
Guido van Rossuma8275371995-07-18 14:07:00 +00001386#endif /* Py_ABSTRACTOBJECT_H */