blob: 237e950c43e601beaf3d2c88fb1fa592ea670195 [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
Guido van Rossuma8275371995-07-18 14:07:00 +00007/* Abstract Object Interface (many thanks to Jim Fulton) */
8
9/*
10 PROPOSAL: A Generic Python Object Interface for Python C Modules
11
12Problem
13
14 Python modules written in C that must access Python objects must do
15 so through routines whose interfaces are described by a set of
16 include files. Unfortunately, these routines vary according to the
17 object accessed. To use these routines, the C programmer must check
18 the type of the object being used and must call a routine based on
19 the object type. For example, to access an element of a sequence,
20 the programmer must determine whether the sequence is a list or a
21 tuple:
22
23 if(is_tupleobject(o))
24 e=gettupleitem(o,i)
25 else if(is_listitem(o))
26 e=getlistitem(o,i)
27
28 If the programmer wants to get an item from another type of object
29 that provides sequence behavior, there is no clear way to do it
30 correctly.
31
32 The persistent programmer may peruse object.h and find that the
33 _typeobject structure provides a means of invoking up to (currently
34 about) 41 special operators. So, for example, a routine can get an
35 item from any object that provides sequence behavior. However, to
36 use this mechanism, the programmer must make their code dependent on
37 the current Python implementation.
38
39 Also, certain semantics, especially memory management semantics, may
40 differ by the type of object being used. Unfortunately, these
41 semantics are not clearly described in the current include files.
42 An abstract interface providing more consistent semantics is needed.
43
44Proposal
45
46 I propose the creation of a standard interface (with an associated
47 library of routines and/or macros) for generically obtaining the
48 services of Python objects. This proposal can be viewed as one
49 components of a Python C interface consisting of several components.
50
51 From the viewpoint of of C access to Python services, we have (as
52 suggested by Guido in off-line discussions):
53
54 - "Very high level layer": two or three functions that let you exec or
55 eval arbitrary Python code given as a string in a module whose name is
56 given, passing C values in and getting C values out using
57 mkvalue/getargs style format strings. This does not require the user
58 to declare any variables of type "PyObject *". This should be enough
59 to write a simple application that gets Python code from the user,
60 execs it, and returns the output or errors. (Error handling must also
61 be part of this API.)
62
63 - "Abstract objects layer": which is the subject of this proposal.
64 It has many functions operating on objects, and lest you do many
65 things from C that you can also write in Python, without going
66 through the Python parser.
67
68 - "Concrete objects layer": This is the public type-dependent
69 interface provided by the standard built-in types, such as floats,
70 strings, and lists. This interface exists and is currently
71 documented by the collection of include files provides with the
72 Python distributions.
73
74 From the point of view of Python accessing services provided by C
75 modules:
76
77 - "Python module interface": this interface consist of the basic
78 routines used to define modules and their members. Most of the
79 current extensions-writing guide deals with this interface.
80
81 - "Built-in object interface": this is the interface that a new
82 built-in type must provide and the mechanisms and rules that a
83 developer of a new built-in type must use and follow.
84
85 This proposal is a "first-cut" that is intended to spur
86 discussion. See especially the lists of notes.
87
88 The Python C object interface will provide four protocols: object,
89 numeric, sequence, and mapping. Each protocol consists of a
90 collection of related operations. If an operation that is not
91 provided by a particular type is invoked, then a standard exception,
92 NotImplementedError is raised with a operation name as an argument.
93 In addition, for convenience this interface defines a set of
94 constructors for building objects of built-in types. This is needed
95 so new objects can be returned from C functions that otherwise treat
96 objects generically.
97
98Memory Management
99
100 For all of the functions described in this proposal, if a function
101 retains a reference to a Python object passed as an argument, then the
102 function will increase the reference count of the object. It is
103 unnecessary for the caller to increase the reference count of an
104 argument in anticipation of the object's retention.
105
106 All Python objects returned from functions should be treated as new
107 objects. Functions that return objects assume that the caller will
108 retain a reference and the reference count of the object has already
109 been incremented to account for this fact. A caller that does not
110 retain a reference to an object that is returned from a function
111 must decrement the reference count of the object (using
112 DECREF(object)) to prevent memory leaks.
113
114 Note that the behavior mentioned here is different from the current
115 behavior for some objects (e.g. lists and tuples) when certain
116 type-specific routines are called directly (e.g. setlistitem). The
117 proposed abstraction layer will provide a consistent memory
118 management interface, correcting for inconsistent behavior for some
119 built-in types.
120
121Protocols
122
123xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
124
125/* Object Protocol: */
126
127 /* Implemented elsewhere:
128
129 int PyObject_Print(PyObject *o, FILE *fp, int flags);
130
131 Print an object, o, on file, fp. Returns -1 on
132 error. The flags argument is used to enable certain printing
133 options. The only option currently supported is Py_Print_RAW.
134
135 (What should be said about Py_Print_RAW?)
136
137 */
138
139 /* Implemented elsewhere:
140
141 int PyObject_HasAttrString(PyObject *o, char *attr_name);
142
143 Returns 1 if o has the attribute attr_name, and 0 otherwise.
144 This is equivalent to the Python expression:
145 hasattr(o,attr_name).
146
147 This function always succeeds.
148
149 */
150
151 /* Implemented elsewhere:
152
153 PyObject* PyObject_GetAttrString(PyObject *o, char *attr_name);
154
155 Retrieve an attributed named attr_name form object o.
156 Returns the attribute value on success, or NULL on failure.
157 This is the equivalent of the Python expression: o.attr_name.
158
159 */
160
161 /* Implemented elsewhere:
162
163 int PyObject_HasAttr(PyObject *o, PyObject *attr_name);
164
165 Returns 1 if o has the attribute attr_name, and 0 otherwise.
166 This is equivalent to the Python expression:
167 hasattr(o,attr_name).
168
169 This function always succeeds.
170
171 */
172
173 /* Implemented elsewhere:
174
175 PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name);
176
177 Retrieve an attributed named attr_name form object o.
178 Returns the attribute value on success, or NULL on failure.
179 This is the equivalent of the Python expression: o.attr_name.
180
181 */
182
183
184 /* Implemented elsewhere:
185
186 int PyObject_SetAttrString(PyObject *o, char *attr_name, PyObject *v);
187
188 Set the value of the attribute named attr_name, for object o,
189 to the value, v. Returns -1 on failure. This is
190 the equivalent of the Python statement: o.attr_name=v.
191
192 */
193
194 /* Implemented elsewhere:
195
196 int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v);
197
198 Set the value of the attribute named attr_name, for object o,
199 to the value, v. Returns -1 on failure. This is
200 the equivalent of the Python statement: o.attr_name=v.
201
202 */
203
204 /* implemented as a macro:
205
206 int PyObject_DelAttrString(PyObject *o, char *attr_name);
207
208 Delete attribute named attr_name, for object o. Returns
209 -1 on failure. This is the equivalent of the Python
210 statement: del o.attr_name.
211
212 */
213#define PyObject_DelAttrString(O,A) PyObject_SetAttrString((O),(A),NULL)
214
215 /* implemented as a macro:
216
217 int PyObject_DelAttr(PyObject *o, PyObject *attr_name);
218
219 Delete attribute named attr_name, for object o. Returns -1
220 on failure. This is the equivalent of the Python
221 statement: del o.attr_name.
222
223 */
224#define PyObject_DelAttr(O,A) PyObject_SetAttr((O),(A),NULL)
225
Mark Hammond91a681d2002-08-12 07:21:58 +0000226 PyAPI_FUNC(int) PyObject_Cmp(PyObject *o1, PyObject *o2, int *result);
Guido van Rossuma8275371995-07-18 14:07:00 +0000227
228 /*
229 Compare the values of o1 and o2 using a routine provided by
230 o1, if one exists, otherwise with a routine provided by o2.
231 The result of the comparison is returned in result. Returns
232 -1 on failure. This is the equivalent of the Python
233 statement: result=cmp(o1,o2).
234
235 */
236
237 /* Implemented elsewhere:
238
239 int PyObject_Compare(PyObject *o1, PyObject *o2);
240
241 Compare the values of o1 and o2 using a routine provided by
242 o1, if one exists, otherwise with a routine provided by o2.
243 Returns the result of the comparison on success. On error,
244 the value returned is undefined. This is equivalent to the
245 Python expression: cmp(o1,o2).
246
247 */
248
249 /* Implemented elsewhere:
250
251 PyObject *PyObject_Repr(PyObject *o);
252
253 Compute the string representation of object, o. Returns the
254 string representation on success, NULL on failure. This is
255 the equivalent of the Python expression: repr(o).
256
257 Called by the repr() built-in function and by reverse quotes.
258
259 */
260
261 /* Implemented elsewhere:
262
263 PyObject *PyObject_Str(PyObject *o);
264
265 Compute the string representation of object, o. Returns the
266 string representation on success, NULL on failure. This is
267 the equivalent of the Python expression: str(o).)
268
269 Called by the str() built-in function and by the print
270 statement.
271
272 */
273
Marc-André Lemburgad7c98e2001-01-17 17:09:53 +0000274 /* Implemented elsewhere:
275
276 PyObject *PyObject_Unicode(PyObject *o);
277
278 Compute the unicode representation of object, o. Returns the
279 unicode representation on success, NULL on failure. This is
280 the equivalent of the Python expression: unistr(o).)
281
282 Called by the unistr() built-in function.
283
284 */
285
Mark Hammond91a681d2002-08-12 07:21:58 +0000286 PyAPI_FUNC(int) PyCallable_Check(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000287
288 /*
289 Determine if the object, o, is callable. Return 1 if the
290 object is callable and 0 otherwise.
291
292 This function always succeeds.
293
294 */
295
296
Tim Peters6d6c1a32001-08-02 04:15:00 +0000297
Mark Hammond91a681d2002-08-12 07:21:58 +0000298 PyAPI_FUNC(PyObject *) PyObject_Call(PyObject *callable_object,
Tim Peters6d6c1a32001-08-02 04:15:00 +0000299 PyObject *args, PyObject *kw);
300
301 /*
Tim Peters6d6c1a32001-08-02 04:15:00 +0000302 Call a callable Python object, callable_object, with
303 arguments and keywords arguments. The 'args' argument can not be
304 NULL, but the 'kw' argument can be NULL.
305
306 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000307
Mark Hammond91a681d2002-08-12 07:21:58 +0000308 PyAPI_FUNC(PyObject *) PyObject_CallObject(PyObject *callable_object,
Fred Drakeea9cb5a2000-07-09 00:20:36 +0000309 PyObject *args);
Guido van Rossuma8275371995-07-18 14:07:00 +0000310
311 /*
Guido van Rossuma8275371995-07-18 14:07:00 +0000312 Call a callable Python object, callable_object, with
313 arguments given by the tuple, args. If no arguments are
314 needed, then args may be NULL. Returns the result of the
315 call on success, or NULL on failure. This is the equivalent
316 of the Python expression: apply(o,args).
317
318 */
319
Mark Hammond91a681d2002-08-12 07:21:58 +0000320 PyAPI_FUNC(PyObject *) PyObject_CallFunction(PyObject *callable_object,
Fred Drakeea9cb5a2000-07-09 00:20:36 +0000321 char *format, ...);
Guido van Rossuma8275371995-07-18 14:07:00 +0000322
323 /*
324 Call a callable Python object, callable_object, with a
325 variable number of C arguments. The C arguments are described
326 using a mkvalue-style format string. The format may be NULL,
327 indicating that no arguments are provided. Returns the
328 result of the call on success, or NULL on failure. This is
329 the equivalent of the Python expression: apply(o,args).
330
331 */
332
333
Mark Hammond91a681d2002-08-12 07:21:58 +0000334 PyAPI_FUNC(PyObject *) PyObject_CallMethod(PyObject *o, char *m,
Fred Drakeea9cb5a2000-07-09 00:20:36 +0000335 char *format, ...);
Guido van Rossuma8275371995-07-18 14:07:00 +0000336
337 /*
338 Call the method named m of object o with a variable number of
339 C arguments. The C arguments are described by a mkvalue
340 format string. The format may be NULL, indicating that no
341 arguments are provided. Returns the result of the call on
342 success, or NULL on failure. This is the equivalent of the
343 Python expression: o.method(args).
Fred Drakeb421b8c2001-10-26 16:21:32 +0000344 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000345
Guido van Rossuma8275371995-07-18 14:07:00 +0000346
Mark Hammond91a681d2002-08-12 07:21:58 +0000347 PyAPI_FUNC(PyObject *) PyObject_CallFunctionObjArgs(PyObject *callable,
Fred Drakeb0c079e2001-10-28 02:39:03 +0000348 ...);
Fred Drakeb421b8c2001-10-26 16:21:32 +0000349
350 /*
351 Call a callable Python object, callable_object, with a
352 variable number of C arguments. The C arguments are provided
353 as PyObject * values; 'n' specifies the number of arguments
354 present. Returns the result of the call on success, or NULL
355 on failure. This is the equivalent of the Python expression:
356 apply(o,args).
357 */
358
359
Mark Hammond91a681d2002-08-12 07:21:58 +0000360 PyAPI_FUNC(PyObject *) PyObject_CallMethodObjArgs(PyObject *o,
Fred Drakeb0c079e2001-10-28 02:39:03 +0000361 PyObject *m, ...);
Fred Drakeb421b8c2001-10-26 16:21:32 +0000362
363 /*
364 Call the method named m of object o with a variable number of
365 C arguments. The C arguments are provided as PyObject * values;
366 'n' specifies the number of arguments present. Returns the
367 result of the call on success, or NULL on failure. This is the
368 equivalent of the Python expression: o.method(args).
Guido van Rossuma8275371995-07-18 14:07:00 +0000369 */
370
371
372 /* Implemented elsewhere:
373
374 long PyObject_Hash(PyObject *o);
375
376 Compute and return the hash, hash_value, of an object, o. On
377 failure, return -1. This is the equivalent of the Python
378 expression: hash(o).
379
380 */
381
382
383 /* Implemented elsewhere:
384
385 int PyObject_IsTrue(PyObject *o);
386
387 Returns 1 if the object, o, is considered to be true, and
388 0 otherwise. This is equivalent to the Python expression:
389 not not o
390
391 This function always succeeds.
392
393 */
394
Guido van Rossumc3d3f961998-04-09 17:53:59 +0000395 /* Implemented elsewhere:
396
397 int PyObject_Not(PyObject *o);
398
399 Returns 0 if the object, o, is considered to be true, and
400 1 otherwise. This is equivalent to the Python expression:
401 not o
402
403 This function always succeeds.
404
405 */
406
Mark Hammond91a681d2002-08-12 07:21:58 +0000407 PyAPI_FUNC(PyObject *) PyObject_Type(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000408
409 /*
410 On success, returns a type object corresponding to the object
411 type of object o. On failure, returns NULL. This is
412 equivalent to the Python expression: type(o).
413 */
414
Mark Hammond91a681d2002-08-12 07:21:58 +0000415 PyAPI_FUNC(int) PyObject_Size(PyObject *o);
Jeremy Hylton6253f832000-07-12 12:56:19 +0000416
Guido van Rossuma8275371995-07-18 14:07:00 +0000417 /*
Jeremy Hylton6253f832000-07-12 12:56:19 +0000418 Return the size of object o. If the object, o, provides
419 both sequence and mapping protocols, the sequence size is
Guido van Rossuma8275371995-07-18 14:07:00 +0000420 returned. On error, -1 is returned. This is the equivalent
421 to the Python expression: len(o).
422
423 */
424
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +0000425 /* For DLL compatibility */
426#undef PyObject_Length
Mark Hammond91a681d2002-08-12 07:21:58 +0000427 PyAPI_FUNC(int) PyObject_Length(PyObject *o);
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +0000428#define PyObject_Length PyObject_Size
429
430
Mark Hammond91a681d2002-08-12 07:21:58 +0000431 PyAPI_FUNC(PyObject *) PyObject_GetItem(PyObject *o, PyObject *key);
Guido van Rossuma8275371995-07-18 14:07:00 +0000432
433 /*
434 Return element of o corresponding to the object, key, or NULL
435 on failure. This is the equivalent of the Python expression:
436 o[key].
437
438 */
439
Mark Hammond91a681d2002-08-12 07:21:58 +0000440 PyAPI_FUNC(int) PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v);
Guido van Rossuma8275371995-07-18 14:07:00 +0000441
442 /*
443 Map the object, key, to the value, v. Returns
444 -1 on failure. This is the equivalent of the Python
445 statement: o[key]=v.
446 */
447
Mark Hammond91a681d2002-08-12 07:21:58 +0000448 PyAPI_FUNC(int) PyObject_DelItemString(PyObject *o, char *key);
Martin v. Löwisb0d71d02002-01-05 10:50:30 +0000449
450 /*
451 Remove the mapping for object, key, from the object *o.
452 Returns -1 on failure. This is equivalent to
453 the Python statement: del o[key].
454 */
455
Mark Hammond91a681d2002-08-12 07:21:58 +0000456 PyAPI_FUNC(int) PyObject_DelItem(PyObject *o, PyObject *key);
Guido van Rossum6cdc6f41996-08-21 17:41:54 +0000457
458 /*
459 Delete the mapping for key from *o. Returns -1 on failure.
460 This is the equivalent of the Python statement: del o[key].
461 */
462
Mark Hammond91a681d2002-08-12 07:21:58 +0000463 PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj,
Guido van Rossumfd9eed32000-03-10 22:35:06 +0000464 const char **buffer,
465 int *buffer_len);
466
467 /*
468 Takes an arbitrary object which must support the (character,
469 single segment) buffer interface and returns a pointer to a
470 read-only memory location useable as character based input
471 for subsequent processing.
472
473 0 is returned on success. buffer and buffer_len are only
474 set in case no error occurrs. Otherwise, -1 is returned and
475 an exception set.
476
477 */
478
Mark Hammond91a681d2002-08-12 07:21:58 +0000479 PyAPI_FUNC(int) PyObject_CheckReadBuffer(PyObject *obj);
Jeremy Hylton89c3a222001-11-09 21:59:42 +0000480
481 /*
482 Checks whether an arbitrary object supports the (character,
483 single segment) buffer interface. Returns 1 on success, 0
484 on failure.
485
486 */
487
Mark Hammond91a681d2002-08-12 07:21:58 +0000488 PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj,
Guido van Rossumfd9eed32000-03-10 22:35:06 +0000489 const void **buffer,
490 int *buffer_len);
491
492 /*
493 Same as PyObject_AsCharBuffer() except that this API expects
494 (readable, single segment) buffer interface and returns a
495 pointer to a read-only memory location which can contain
496 arbitrary data.
497
498 0 is returned on success. buffer and buffer_len are only
499 set in case no error occurrs. Otherwise, -1 is returned and
500 an exception set.
501
502 */
503
Mark Hammond91a681d2002-08-12 07:21:58 +0000504 PyAPI_FUNC(int) PyObject_AsWriteBuffer(PyObject *obj,
Guido van Rossumfd9eed32000-03-10 22:35:06 +0000505 void **buffer,
506 int *buffer_len);
507
508 /*
509 Takes an arbitrary object which must support the (writeable,
510 single segment) buffer interface and returns a pointer to a
511 writeable memory location in buffer of size buffer_len.
512
513 0 is returned on success. buffer and buffer_len are only
514 set in case no error occurrs. Otherwise, -1 is returned and
515 an exception set.
516
517 */
Guido van Rossuma8275371995-07-18 14:07:00 +0000518
Guido van Rossum213c7a62001-04-23 14:08:49 +0000519/* Iterators */
520
Mark Hammond91a681d2002-08-12 07:21:58 +0000521 PyAPI_FUNC(PyObject *) PyObject_GetIter(PyObject *);
Guido van Rossum59d1d2b2001-04-20 19:13:02 +0000522 /* Takes an object and returns an iterator for it.
523 This is typically a new iterator but if the argument
524 is an iterator, this returns itself. */
525
Guido van Rossum213c7a62001-04-23 14:08:49 +0000526#define PyIter_Check(obj) \
527 (PyType_HasFeature((obj)->ob_type, Py_TPFLAGS_HAVE_ITER) && \
528 (obj)->ob_type->tp_iternext != NULL)
529
Mark Hammond91a681d2002-08-12 07:21:58 +0000530 PyAPI_FUNC(PyObject *) PyIter_Next(PyObject *);
Guido van Rossum213c7a62001-04-23 14:08:49 +0000531 /* Takes an iterator object and calls its tp_iternext slot,
532 returning the next value. If the iterator is exhausted,
Tim Petersf4848da2001-05-05 00:14:56 +0000533 this returns NULL without setting an exception.
534 NULL with an exception means an error occurred. */
Guido van Rossum213c7a62001-04-23 14:08:49 +0000535
Guido van Rossuma8275371995-07-18 14:07:00 +0000536/* Number Protocol:*/
537
Mark Hammond91a681d2002-08-12 07:21:58 +0000538 PyAPI_FUNC(int) PyNumber_Check(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000539
540 /*
541 Returns 1 if the object, o, provides numeric protocols, and
542 false otherwise.
543
544 This function always succeeds.
545
546 */
547
Mark Hammond91a681d2002-08-12 07:21:58 +0000548 PyAPI_FUNC(PyObject *) PyNumber_Add(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000549
550 /*
551 Returns the result of adding o1 and o2, or null on failure.
552 This is the equivalent of the Python expression: o1+o2.
553
554
555 */
556
Mark Hammond91a681d2002-08-12 07:21:58 +0000557 PyAPI_FUNC(PyObject *) PyNumber_Subtract(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000558
559 /*
560 Returns the result of subtracting o2 from o1, or null on
561 failure. This is the equivalent of the Python expression:
562 o1-o2.
563
564 */
565
Mark Hammond91a681d2002-08-12 07:21:58 +0000566 PyAPI_FUNC(PyObject *) PyNumber_Multiply(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000567
568 /*
569 Returns the result of multiplying o1 and o2, or null on
570 failure. This is the equivalent of the Python expression:
571 o1*o2.
572
573
574 */
575
Mark Hammond91a681d2002-08-12 07:21:58 +0000576 PyAPI_FUNC(PyObject *) PyNumber_Divide(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000577
578 /*
579 Returns the result of dividing o1 by o2, or null on failure.
580 This is the equivalent of the Python expression: o1/o2.
581
582
583 */
584
Mark Hammond91a681d2002-08-12 07:21:58 +0000585 PyAPI_FUNC(PyObject *) PyNumber_FloorDivide(PyObject *o1, PyObject *o2);
Guido van Rossum4668b002001-08-08 05:00:18 +0000586
587 /*
588 Returns the result of dividing o1 by o2 giving an integral result,
589 or null on failure.
590 This is the equivalent of the Python expression: o1//o2.
591
592
593 */
594
Mark Hammond91a681d2002-08-12 07:21:58 +0000595 PyAPI_FUNC(PyObject *) PyNumber_TrueDivide(PyObject *o1, PyObject *o2);
Guido van Rossum4668b002001-08-08 05:00:18 +0000596
597 /*
598 Returns the result of dividing o1 by o2 giving a float result,
599 or null on failure.
600 This is the equivalent of the Python expression: o1/o2.
601
602
603 */
604
Mark Hammond91a681d2002-08-12 07:21:58 +0000605 PyAPI_FUNC(PyObject *) PyNumber_Remainder(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000606
607 /*
608 Returns the remainder of dividing o1 by o2, or null on
609 failure. This is the equivalent of the Python expression:
610 o1%o2.
611
612
613 */
614
Mark Hammond91a681d2002-08-12 07:21:58 +0000615 PyAPI_FUNC(PyObject *) PyNumber_Divmod(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000616
617 /*
618 See the built-in function divmod. Returns NULL on failure.
619 This is the equivalent of the Python expression:
620 divmod(o1,o2).
621
622
623 */
624
Mark Hammond91a681d2002-08-12 07:21:58 +0000625 PyAPI_FUNC(PyObject *) PyNumber_Power(PyObject *o1, PyObject *o2,
Fred Drakeea9cb5a2000-07-09 00:20:36 +0000626 PyObject *o3);
Guido van Rossuma8275371995-07-18 14:07:00 +0000627
628 /*
629 See the built-in function pow. Returns NULL on failure.
630 This is the equivalent of the Python expression:
631 pow(o1,o2,o3), where o3 is optional.
632
633 */
634
Mark Hammond91a681d2002-08-12 07:21:58 +0000635 PyAPI_FUNC(PyObject *) PyNumber_Negative(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000636
637 /*
638 Returns the negation of o on success, or null on failure.
639 This is the equivalent of the Python expression: -o.
640
641 */
642
Mark Hammond91a681d2002-08-12 07:21:58 +0000643 PyAPI_FUNC(PyObject *) PyNumber_Positive(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000644
645 /*
646 Returns the (what?) of o on success, or NULL on failure.
647 This is the equivalent of the Python expression: +o.
648
649 */
650
Mark Hammond91a681d2002-08-12 07:21:58 +0000651 PyAPI_FUNC(PyObject *) PyNumber_Absolute(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000652
653 /*
654 Returns the absolute value of o, or null on failure. This is
655 the equivalent of the Python expression: abs(o).
656
657 */
658
Mark Hammond91a681d2002-08-12 07:21:58 +0000659 PyAPI_FUNC(PyObject *) PyNumber_Invert(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000660
661 /*
662 Returns the bitwise negation of o on success, or NULL on
663 failure. This is the equivalent of the Python expression:
664 ~o.
665
666
667 */
668
Mark Hammond91a681d2002-08-12 07:21:58 +0000669 PyAPI_FUNC(PyObject *) PyNumber_Lshift(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000670
671 /*
672 Returns the result of left shifting o1 by o2 on success, or
673 NULL on failure. This is the equivalent of the Python
674 expression: o1 << o2.
675
676
677 */
678
Mark Hammond91a681d2002-08-12 07:21:58 +0000679 PyAPI_FUNC(PyObject *) PyNumber_Rshift(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000680
681 /*
682 Returns the result of right shifting o1 by o2 on success, or
683 NULL on failure. This is the equivalent of the Python
684 expression: o1 >> o2.
685
686 */
687
Mark Hammond91a681d2002-08-12 07:21:58 +0000688 PyAPI_FUNC(PyObject *) PyNumber_And(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000689
690 /*
Guido van Rossum1ca407f1997-02-14 22:51:40 +0000691 Returns the result of bitwise and of o1 and o2 on success, or
692 NULL on failure. This is the equivalent of the Python
693 expression: o1&o2.
Guido van Rossuma8275371995-07-18 14:07:00 +0000694
695
696 */
697
Mark Hammond91a681d2002-08-12 07:21:58 +0000698 PyAPI_FUNC(PyObject *) PyNumber_Xor(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000699
700 /*
701 Returns the bitwise exclusive or of o1 by o2 on success, or
702 NULL on failure. This is the equivalent of the Python
703 expression: o1^o2.
704
705
706 */
707
Mark Hammond91a681d2002-08-12 07:21:58 +0000708 PyAPI_FUNC(PyObject *) PyNumber_Or(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000709
710 /*
Guido van Rossum1ca407f1997-02-14 22:51:40 +0000711 Returns the result of bitwise or or o1 and o2 on success, or
712 NULL on failure. This is the equivalent of the Python
713 expression: o1|o2.
Guido van Rossuma8275371995-07-18 14:07:00 +0000714
715 */
716
717 /* Implemented elsewhere:
718
Guido van Rossumed227f01996-09-06 13:40:53 +0000719 int PyNumber_Coerce(PyObject **p1, PyObject **p2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000720
Guido van Rossumed227f01996-09-06 13:40:53 +0000721 This function takes the addresses of two variables of type
722 PyObject*.
723
724 If the objects pointed to by *p1 and *p2 have the same type,
725 increment their reference count and return 0 (success).
726 If the objects can be converted to a common numeric type,
727 replace *p1 and *p2 by their converted value (with 'new'
728 reference counts), and return 0.
729 If no conversion is possible, or if some other error occurs,
730 return -1 (failure) and don't increment the reference counts.
731 The call PyNumber_Coerce(&o1, &o2) is equivalent to the Python
732 statement o1, o2 = coerce(o1, o2).
Guido van Rossuma8275371995-07-18 14:07:00 +0000733
734 */
735
Mark Hammond91a681d2002-08-12 07:21:58 +0000736 PyAPI_FUNC(PyObject *) PyNumber_Int(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000737
738 /*
739 Returns the o converted to an integer object on success, or
740 NULL on failure. This is the equivalent of the Python
741 expression: int(o).
742
743 */
744
Mark Hammond91a681d2002-08-12 07:21:58 +0000745 PyAPI_FUNC(PyObject *) PyNumber_Long(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000746
747 /*
748 Returns the o converted to a long integer object on success,
749 or NULL on failure. This is the equivalent of the Python
750 expression: long(o).
751
752 */
753
Mark Hammond91a681d2002-08-12 07:21:58 +0000754 PyAPI_FUNC(PyObject *) PyNumber_Float(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000755
756 /*
757 Returns the o converted to a float object on success, or NULL
758 on failure. This is the equivalent of the Python expression:
759 float(o).
760 */
761
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000762/* In-place variants of (some of) the above number protocol functions */
763
Mark Hammond91a681d2002-08-12 07:21:58 +0000764 PyAPI_FUNC(PyObject *) PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000765
766 /*
767 Returns the result of adding o2 to o1, possibly in-place, or null
768 on failure. This is the equivalent of the Python expression:
769 o1 += o2.
770
771 */
772
Mark Hammond91a681d2002-08-12 07:21:58 +0000773 PyAPI_FUNC(PyObject *) PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000774
775 /*
776 Returns the result of subtracting o2 from o1, possibly in-place or
777 null on failure. This is the equivalent of the Python expression:
778 o1 -= o2.
779
780 */
781
Mark Hammond91a681d2002-08-12 07:21:58 +0000782 PyAPI_FUNC(PyObject *) PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000783
784 /*
785 Returns the result of multiplying o1 by o2, possibly in-place, or
786 null on failure. This is the equivalent of the Python expression:
787 o1 *= o2.
788
789 */
790
Mark Hammond91a681d2002-08-12 07:21:58 +0000791 PyAPI_FUNC(PyObject *) PyNumber_InPlaceDivide(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000792
793 /*
794 Returns the result of dividing o1 by o2, possibly in-place, or null
795 on failure. This is the equivalent of the Python expression:
796 o1 /= o2.
797
798 */
799
Mark Hammond91a681d2002-08-12 07:21:58 +0000800 PyAPI_FUNC(PyObject *) PyNumber_InPlaceFloorDivide(PyObject *o1,
Guido van Rossum4668b002001-08-08 05:00:18 +0000801 PyObject *o2);
802
803 /*
804 Returns the result of dividing o1 by o2 giving an integral result,
805 possibly in-place, or null on failure.
806 This is the equivalent of the Python expression:
807 o1 /= o2.
808
809 */
810
Mark Hammond91a681d2002-08-12 07:21:58 +0000811 PyAPI_FUNC(PyObject *) PyNumber_InPlaceTrueDivide(PyObject *o1,
Guido van Rossum4668b002001-08-08 05:00:18 +0000812 PyObject *o2);
813
814 /*
815 Returns the result of dividing o1 by o2 giving a float result,
816 possibly in-place, or null on failure.
817 This is the equivalent of the Python expression:
818 o1 /= o2.
819
820 */
821
Mark Hammond91a681d2002-08-12 07:21:58 +0000822 PyAPI_FUNC(PyObject *) PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000823
824 /*
825 Returns the remainder of dividing o1 by o2, possibly in-place, or
826 null on failure. This is the equivalent of the Python expression:
827 o1 %= o2.
828
829 */
830
Mark Hammond91a681d2002-08-12 07:21:58 +0000831 PyAPI_FUNC(PyObject *) PyNumber_InPlacePower(PyObject *o1, PyObject *o2,
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000832 PyObject *o3);
833
834 /*
835 Returns the result of raising o1 to the power of o2, possibly
836 in-place, or null on failure. This is the equivalent of the Python
837 expression: o1 **= o2, or pow(o1, o2, o3) if o3 is present.
838
839 */
840
Mark Hammond91a681d2002-08-12 07:21:58 +0000841 PyAPI_FUNC(PyObject *) PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000842
843 /*
844 Returns the result of left shifting o1 by o2, possibly in-place, or
845 null on failure. This is the equivalent of the Python expression:
846 o1 <<= o2.
847
848 */
849
Mark Hammond91a681d2002-08-12 07:21:58 +0000850 PyAPI_FUNC(PyObject *) PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000851
852 /*
853 Returns the result of right shifting o1 by o2, possibly in-place or
854 null on failure. This is the equivalent of the Python expression:
855 o1 >>= o2.
856
857 */
858
Mark Hammond91a681d2002-08-12 07:21:58 +0000859 PyAPI_FUNC(PyObject *) PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000860
861 /*
862 Returns the result of bitwise and of o1 and o2, possibly in-place,
863 or null on failure. This is the equivalent of the Python
864 expression: o1 &= o2.
865
866 */
867
Mark Hammond91a681d2002-08-12 07:21:58 +0000868 PyAPI_FUNC(PyObject *) PyNumber_InPlaceXor(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000869
870 /*
871 Returns the bitwise exclusive or of o1 by o2, possibly in-place, or
872 null on failure. This is the equivalent of the Python expression:
873 o1 ^= o2.
874
875 */
876
Mark Hammond91a681d2002-08-12 07:21:58 +0000877 PyAPI_FUNC(PyObject *) PyNumber_InPlaceOr(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +0000878
879 /*
880 Returns the result of bitwise or or o1 and o2, possibly in-place,
881 or null on failure. This is the equivalent of the Python
882 expression: o1 |= o2.
883
884 */
885
Guido van Rossuma8275371995-07-18 14:07:00 +0000886
887/* Sequence protocol:*/
888
Mark Hammond91a681d2002-08-12 07:21:58 +0000889 PyAPI_FUNC(int) PySequence_Check(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000890
891 /*
892 Return 1 if the object provides sequence protocol, and zero
893 otherwise.
894
895 This function always succeeds.
896
897 */
898
Mark Hammond91a681d2002-08-12 07:21:58 +0000899 PyAPI_FUNC(int) PySequence_Size(PyObject *o);
Jeremy Hylton6253f832000-07-12 12:56:19 +0000900
Guido van Rossum4f4ce681996-07-21 02:22:56 +0000901 /*
Jeremy Hylton6253f832000-07-12 12:56:19 +0000902 Return the size of sequence object o, or -1 on failure.
Guido van Rossum4f4ce681996-07-21 02:22:56 +0000903
904 */
905
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +0000906 /* For DLL compatibility */
907#undef PySequence_Length
Mark Hammond91a681d2002-08-12 07:21:58 +0000908 PyAPI_FUNC(int) PySequence_Length(PyObject *o);
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +0000909#define PySequence_Length PySequence_Size
910
911
Mark Hammond91a681d2002-08-12 07:21:58 +0000912 PyAPI_FUNC(PyObject *) PySequence_Concat(PyObject *o1, PyObject *o2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000913
914 /*
Thomas Wouters7e474022000-07-16 12:04:32 +0000915 Return the concatenation of o1 and o2 on success, and NULL on
Guido van Rossuma8275371995-07-18 14:07:00 +0000916 failure. This is the equivalent of the Python
917 expression: o1+o2.
918
919 */
920
Mark Hammond91a681d2002-08-12 07:21:58 +0000921 PyAPI_FUNC(PyObject *) PySequence_Repeat(PyObject *o, int count);
Guido van Rossuma8275371995-07-18 14:07:00 +0000922
923 /*
924 Return the result of repeating sequence object o count times,
925 or NULL on failure. This is the equivalent of the Python
926 expression: o1*count.
927
928 */
929
Mark Hammond91a681d2002-08-12 07:21:58 +0000930 PyAPI_FUNC(PyObject *) PySequence_GetItem(PyObject *o, int i);
Guido van Rossuma8275371995-07-18 14:07:00 +0000931
932 /*
933 Return the ith element of o, or NULL on failure. This is the
934 equivalent of the Python expression: o[i].
Guido van Rossuma8275371995-07-18 14:07:00 +0000935 */
936
Mark Hammond91a681d2002-08-12 07:21:58 +0000937 PyAPI_FUNC(PyObject *) PySequence_GetSlice(PyObject *o, int i1, int i2);
Guido van Rossuma8275371995-07-18 14:07:00 +0000938
939 /*
940 Return the slice of sequence object o between i1 and i2, or
941 NULL on failure. This is the equivalent of the Python
942 expression: o[i1:i2].
943
944 */
945
Mark Hammond91a681d2002-08-12 07:21:58 +0000946 PyAPI_FUNC(int) PySequence_SetItem(PyObject *o, int i, PyObject *v);
Guido van Rossuma8275371995-07-18 14:07:00 +0000947
948 /*
949 Assign object v to the ith element of o. Returns
950 -1 on failure. This is the equivalent of the Python
951 statement: o[i]=v.
952
953 */
954
Mark Hammond91a681d2002-08-12 07:21:58 +0000955 PyAPI_FUNC(int) PySequence_DelItem(PyObject *o, int i);
Guido van Rossum6cdc6f41996-08-21 17:41:54 +0000956
957 /*
958 Delete the ith element of object v. Returns
959 -1 on failure. This is the equivalent of the Python
960 statement: del o[i].
961 */
962
Mark Hammond91a681d2002-08-12 07:21:58 +0000963 PyAPI_FUNC(int) PySequence_SetSlice(PyObject *o, int i1, int i2,
Fred Drakeea9cb5a2000-07-09 00:20:36 +0000964 PyObject *v);
Guido van Rossuma8275371995-07-18 14:07:00 +0000965
966 /*
967 Assign the sequence object, v, to the slice in sequence
968 object, o, from i1 to i2. Returns -1 on failure. This is the
969 equivalent of the Python statement: o[i1:i2]=v.
970 */
971
Mark Hammond91a681d2002-08-12 07:21:58 +0000972 PyAPI_FUNC(int) PySequence_DelSlice(PyObject *o, int i1, int i2);
Guido van Rossum6cdc6f41996-08-21 17:41:54 +0000973
974 /*
975 Delete the slice in sequence object, o, from i1 to i2.
976 Returns -1 on failure. This is the equivalent of the Python
977 statement: del o[i1:i2].
978 */
979
Mark Hammond91a681d2002-08-12 07:21:58 +0000980 PyAPI_FUNC(PyObject *) PySequence_Tuple(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +0000981
982 /*
Guido van Rossumf39fc431997-03-04 18:31:47 +0000983 Returns the sequence, o, as a tuple on success, and NULL on failure.
Guido van Rossuma8275371995-07-18 14:07:00 +0000984 This is equivalent to the Python expression: tuple(o)
985 */
986
Andrew M. Kuchling74042d62000-06-18 18:43:14 +0000987
Mark Hammond91a681d2002-08-12 07:21:58 +0000988 PyAPI_FUNC(PyObject *) PySequence_List(PyObject *o);
Guido van Rossum2adf06b1996-12-05 21:48:50 +0000989 /*
Guido van Rossumf39fc431997-03-04 18:31:47 +0000990 Returns the sequence, o, as a list on success, and NULL on failure.
991 This is equivalent to the Python expression: list(o)
Guido van Rossum2adf06b1996-12-05 21:48:50 +0000992 */
Guido van Rossumf39fc431997-03-04 18:31:47 +0000993
Mark Hammond91a681d2002-08-12 07:21:58 +0000994 PyAPI_FUNC(PyObject *) PySequence_Fast(PyObject *o, const char* m);
Andrew M. Kuchling74042d62000-06-18 18:43:14 +0000995 /*
996 Returns the sequence, o, as a tuple, unless it's already a
997 tuple or list. Use PySequence_Fast_GET_ITEM to access the
Tim Peters1fc240e2001-10-26 05:06:50 +0000998 members of this list, and PySequence_Fast_GET_SIZE to get its length.
Andrew M. Kuchling74042d62000-06-18 18:43:14 +0000999
Tim Peters6912d4d2001-05-05 03:56:37 +00001000 Returns NULL on failure. If the object does not support iteration,
Andrew M. Kuchling74042d62000-06-18 18:43:14 +00001001 raises a TypeError exception with m as the message text.
1002 */
1003
Tim Peters1fc240e2001-10-26 05:06:50 +00001004#define PySequence_Fast_GET_SIZE(o) \
1005 (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
1006 /*
1007 Return the size of o, assuming that o was returned by
1008 PySequence_Fast and is not NULL.
1009 */
1010
Andrew M. Kuchling74042d62000-06-18 18:43:14 +00001011#define PySequence_Fast_GET_ITEM(o, i)\
1012 (PyList_Check(o) ? PyList_GET_ITEM(o, i) : PyTuple_GET_ITEM(o, i))
Andrew M. Kuchling74042d62000-06-18 18:43:14 +00001013 /*
1014 Return the ith element of o, assuming that o was returned by
1015 PySequence_Fast, and that i is within bounds.
1016 */
1017
Martin v. Löwis01f94bd2002-05-08 08:44:21 +00001018#define PySequence_ITEM(o, i)\
1019 ( o->ob_type->tp_as_sequence->sq_item(o, i) )
1020 /* Assume tp_as_sequence and sq_item exist and that i does not
1021 need to be corrected for a negative index
1022 */
1023
Mark Hammond91a681d2002-08-12 07:21:58 +00001024 PyAPI_FUNC(int) PySequence_Count(PyObject *o, PyObject *value);
Guido van Rossuma8275371995-07-18 14:07:00 +00001025
1026 /*
1027 Return the number of occurrences on value on o, that is,
1028 return the number of keys for which o[key]==value. On
1029 failure, return -1. This is equivalent to the Python
1030 expression: o.count(value).
1031 */
1032
Mark Hammond91a681d2002-08-12 07:21:58 +00001033 PyAPI_FUNC(int) PySequence_Contains(PyObject *seq, PyObject *ob);
Tim Peterscb8d3682001-05-05 21:05:01 +00001034 /*
1035 Return -1 if error; 1 if ob in seq; 0 if ob not in seq.
Tim Peters16a77ad2001-09-08 04:00:12 +00001036 Use __contains__ if possible, else _PySequence_IterSearch().
Tim Peterscb8d3682001-05-05 21:05:01 +00001037 */
1038
Tim Peters16a77ad2001-09-08 04:00:12 +00001039#define PY_ITERSEARCH_COUNT 1
1040#define PY_ITERSEARCH_INDEX 2
1041#define PY_ITERSEARCH_CONTAINS 3
Mark Hammond91a681d2002-08-12 07:21:58 +00001042 PyAPI_FUNC(int) _PySequence_IterSearch(PyObject *seq, PyObject *obj,
Tim Peters16a77ad2001-09-08 04:00:12 +00001043 int operation);
1044 /*
1045 Iterate over seq. Result depends on the operation:
1046 PY_ITERSEARCH_COUNT: return # of times obj appears in seq; -1 if
1047 error.
1048 PY_ITERSEARCH_INDEX: return 0-based index of first occurence of
1049 obj in seq; set ValueError and return -1 if none found;
1050 also return -1 on error.
1051 PY_ITERSEARCH_CONTAINS: return 1 if obj in seq, else 0; -1 on
1052 error.
1053 */
Guido van Rossum83684531999-03-17 18:44:39 +00001054
1055/* For DLL-level backwards compatibility */
1056#undef PySequence_In
Mark Hammond91a681d2002-08-12 07:21:58 +00001057 PyAPI_FUNC(int) PySequence_In(PyObject *o, PyObject *value);
Guido van Rossum83684531999-03-17 18:44:39 +00001058
1059/* For source-level backwards compatibility */
Guido van Rossumf1536db1998-08-23 22:06:59 +00001060#define PySequence_In PySequence_Contains
Guido van Rossuma8275371995-07-18 14:07:00 +00001061
1062 /*
1063 Determine if o contains value. If an item in o is equal to
1064 X, return 1, otherwise return 0. On error, return -1. This
1065 is equivalent to the Python expression: value in o.
1066 */
1067
Mark Hammond91a681d2002-08-12 07:21:58 +00001068 PyAPI_FUNC(int) PySequence_Index(PyObject *o, PyObject *value);
Guido van Rossuma8275371995-07-18 14:07:00 +00001069
1070 /*
1071 Return the first index for which o[i]=value. On error,
1072 return -1. This is equivalent to the Python
1073 expression: o.index(value).
1074 */
1075
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001076/* In-place versions of some of the above Sequence functions. */
1077
Mark Hammond91a681d2002-08-12 07:21:58 +00001078 PyAPI_FUNC(PyObject *) PySequence_InPlaceConcat(PyObject *o1, PyObject *o2);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001079
1080 /*
1081 Append o2 to o1, in-place when possible. Return the resulting
1082 object, which could be o1, or NULL on failure. This is the
1083 equivalent of the Python expression: o1 += o2.
1084
1085 */
1086
Mark Hammond91a681d2002-08-12 07:21:58 +00001087 PyAPI_FUNC(PyObject *) PySequence_InPlaceRepeat(PyObject *o, int count);
Thomas Woutersdd8dbdb2000-08-24 20:09:45 +00001088
1089 /*
1090 Repeat o1 by count, in-place when possible. Return the resulting
1091 object, which could be o1, or NULL on failure. This is the
1092 equivalent of the Python expression: o1 *= count.
1093
1094 */
1095
Guido van Rossuma8275371995-07-18 14:07:00 +00001096/* Mapping protocol:*/
1097
Mark Hammond91a681d2002-08-12 07:21:58 +00001098 PyAPI_FUNC(int) PyMapping_Check(PyObject *o);
Guido van Rossuma8275371995-07-18 14:07:00 +00001099
1100 /*
1101 Return 1 if the object provides mapping protocol, and zero
1102 otherwise.
1103
1104 This function always succeeds.
1105 */
1106
Mark Hammond91a681d2002-08-12 07:21:58 +00001107 PyAPI_FUNC(int) PyMapping_Size(PyObject *o);
Jeremy Hylton6253f832000-07-12 12:56:19 +00001108
Guido van Rossuma8275371995-07-18 14:07:00 +00001109 /*
1110 Returns the number of keys in object o on success, and -1 on
1111 failure. For objects that do not provide sequence protocol,
1112 this is equivalent to the Python expression: len(o).
1113 */
1114
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +00001115 /* For DLL compatibility */
1116#undef PyMapping_Length
Mark Hammond91a681d2002-08-12 07:21:58 +00001117 PyAPI_FUNC(int) PyMapping_Length(PyObject *o);
Marc-André Lemburgcf5f3582000-07-17 09:22:55 +00001118#define PyMapping_Length PyMapping_Size
1119
1120
Guido van Rossuma25e5e91996-09-06 13:48:38 +00001121 /* implemented as a macro:
1122
Fred Drakeea9cb5a2000-07-09 00:20:36 +00001123 int PyMapping_DelItemString(PyObject *o, char *key);
Guido van Rossuma8275371995-07-18 14:07:00 +00001124
Guido van Rossuma8275371995-07-18 14:07:00 +00001125 Remove the mapping for object, key, from the object *o.
1126 Returns -1 on failure. This is equivalent to
1127 the Python statement: del o[key].
1128 */
Jeremy Hylton7c7ee5f2001-11-28 16:20:07 +00001129#define PyMapping_DelItemString(O,K) PyObject_DelItemString((O),(K))
Guido van Rossuma25e5e91996-09-06 13:48:38 +00001130
1131 /* implemented as a macro:
Guido van Rossuma8275371995-07-18 14:07:00 +00001132
Fred Drakeea9cb5a2000-07-09 00:20:36 +00001133 int PyMapping_DelItem(PyObject *o, PyObject *key);
Guido van Rossuma8275371995-07-18 14:07:00 +00001134
Guido van Rossuma8275371995-07-18 14:07:00 +00001135 Remove the mapping for object, key, from the object *o.
1136 Returns -1 on failure. This is equivalent to
1137 the Python statement: del o[key].
1138 */
Jeremy Hylton7c7ee5f2001-11-28 16:20:07 +00001139#define PyMapping_DelItem(O,K) PyObject_DelItem((O),(K))
Guido van Rossuma8275371995-07-18 14:07:00 +00001140
Mark Hammond91a681d2002-08-12 07:21:58 +00001141 PyAPI_FUNC(int) PyMapping_HasKeyString(PyObject *o, char *key);
Guido van Rossuma8275371995-07-18 14:07:00 +00001142
1143 /*
1144 On success, return 1 if the mapping object has the key, key,
1145 and 0 otherwise. This is equivalent to the Python expression:
1146 o.has_key(key).
1147
1148 This function always succeeds.
1149 */
1150
Mark Hammond91a681d2002-08-12 07:21:58 +00001151 PyAPI_FUNC(int) PyMapping_HasKey(PyObject *o, PyObject *key);
Guido van Rossuma8275371995-07-18 14:07:00 +00001152
1153 /*
1154 Return 1 if the mapping object has the key, key,
1155 and 0 otherwise. This is equivalent to the Python expression:
1156 o.has_key(key).
1157
1158 This function always succeeds.
1159
1160 */
1161
1162 /* Implemented as macro:
1163
1164 PyObject *PyMapping_Keys(PyObject *o);
1165
1166 On success, return a list of the keys in object o. On
1167 failure, return NULL. This is equivalent to the Python
1168 expression: o.keys().
1169 */
1170#define PyMapping_Keys(O) PyObject_CallMethod(O,"keys",NULL)
1171
1172 /* Implemented as macro:
1173
1174 PyObject *PyMapping_Values(PyObject *o);
1175
1176 On success, return a list of the values in object o. On
1177 failure, return NULL. This is equivalent to the Python
1178 expression: o.values().
1179 */
1180#define PyMapping_Values(O) PyObject_CallMethod(O,"values",NULL)
1181
1182 /* Implemented as macro:
1183
1184 PyObject *PyMapping_Items(PyObject *o);
1185
1186 On success, return a list of the items in object o, where
1187 each item is a tuple containing a key-value pair. On
1188 failure, return NULL. This is equivalent to the Python
1189 expression: o.items().
1190
1191 */
1192#define PyMapping_Items(O) PyObject_CallMethod(O,"items",NULL)
1193
Mark Hammond91a681d2002-08-12 07:21:58 +00001194 PyAPI_FUNC(PyObject *) PyMapping_GetItemString(PyObject *o, char *key);
Guido van Rossuma8275371995-07-18 14:07:00 +00001195
1196 /*
1197 Return element of o corresponding to the object, key, or NULL
1198 on failure. This is the equivalent of the Python expression:
1199 o[key].
1200 */
1201
Mark Hammond91a681d2002-08-12 07:21:58 +00001202 PyAPI_FUNC(int) PyMapping_SetItemString(PyObject *o, char *key,
Fred Drakeea9cb5a2000-07-09 00:20:36 +00001203 PyObject *value);
Guido van Rossuma8275371995-07-18 14:07:00 +00001204
1205 /*
1206 Map the object, key, to the value, v. Returns
1207 -1 on failure. This is the equivalent of the Python
1208 statement: o[key]=v.
1209 */
1210
1211
Mark Hammond91a681d2002-08-12 07:21:58 +00001212PyAPI_FUNC(int) PyObject_IsInstance(PyObject *object, PyObject *typeorclass);
Guido van Rossum823649d2001-03-21 18:40:58 +00001213 /* isinstance(object, typeorclass) */
1214
Mark Hammond91a681d2002-08-12 07:21:58 +00001215PyAPI_FUNC(int) PyObject_IsSubclass(PyObject *object, PyObject *typeorclass);
Guido van Rossum823649d2001-03-21 18:40:58 +00001216 /* issubclass(object, typeorclass) */
1217
1218
Guido van Rossum8ca687a1995-09-18 21:20:02 +00001219#ifdef __cplusplus
1220}
1221#endif
Guido van Rossuma8275371995-07-18 14:07:00 +00001222#endif /* Py_ABSTRACTOBJECT_H */