📄 abstract.h
字号:
DL_IMPORT(PyObject *) PyObject_Type(PyObject *o);
/*
On success, returns a type object corresponding to the object
type of object o. On failure, returns NULL. This is
equivalent to the Python expression: type(o).
*/
DL_IMPORT(int) PyObject_Size(PyObject *o);
/*
Return the size of object o. If the object, o, provides
both sequence and mapping protocols, the sequence size is
returned. On error, -1 is returned. This is the equivalent
to the Python expression: len(o).
*/
/* For DLL compatibility */
#undef PyObject_Length
DL_IMPORT(int) PyObject_Length(PyObject *o);
#define PyObject_Length PyObject_Size
DL_IMPORT(PyObject *) PyObject_GetItem(PyObject *o, PyObject *key);
/*
Return element of o corresponding to the object, key, or NULL
on failure. This is the equivalent of the Python expression:
o[key].
*/
DL_IMPORT(int) PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v);
/*
Map the object, key, to the value, v. Returns
-1 on failure. This is the equivalent of the Python
statement: o[key]=v.
*/
DL_IMPORT(int) PyObject_DelItemString(PyObject *o, char *key);
/*
Remove the mapping for object, key, from the object *o.
Returns -1 on failure. This is equivalent to
the Python statement: del o[key].
*/
DL_IMPORT(int) PyObject_DelItem(PyObject *o, PyObject *key);
/*
Delete the mapping for key from *o. Returns -1 on failure.
This is the equivalent of the Python statement: del o[key].
*/
DL_IMPORT(int) PyObject_AsCharBuffer(PyObject *obj,
const char **buffer,
int *buffer_len);
/*
Takes an arbitrary object which must support the (character,
single segment) buffer interface and returns a pointer to a
read-only memory location useable as character based input
for subsequent processing.
0 is returned on success. buffer and buffer_len are only
set in case no error occurrs. Otherwise, -1 is returned and
an exception set.
*/
DL_IMPORT(int) PyObject_CheckReadBuffer(PyObject *obj);
/*
Checks whether an arbitrary object supports the (character,
single segment) buffer interface. Returns 1 on success, 0
on failure.
*/
DL_IMPORT(int) PyObject_AsReadBuffer(PyObject *obj,
const void **buffer,
int *buffer_len);
/*
Same as PyObject_AsCharBuffer() except that this API expects
(readable, single segment) buffer interface and returns a
pointer to a read-only memory location which can contain
arbitrary data.
0 is returned on success. buffer and buffer_len are only
set in case no error occurrs. Otherwise, -1 is returned and
an exception set.
*/
DL_IMPORT(int) PyObject_AsWriteBuffer(PyObject *obj,
void **buffer,
int *buffer_len);
/*
Takes an arbitrary object which must support the (writeable,
single segment) buffer interface and returns a pointer to a
writeable memory location in buffer of size buffer_len.
0 is returned on success. buffer and buffer_len are only
set in case no error occurrs. Otherwise, -1 is returned and
an exception set.
*/
/* Iterators */
DL_IMPORT(PyObject *) PyObject_GetIter(PyObject *);
/* Takes an object and returns an iterator for it.
This is typically a new iterator but if the argument
is an iterator, this returns itself. */
#define PyIter_Check(obj) \
(PyType_HasFeature((obj)->ob_type, Py_TPFLAGS_HAVE_ITER) && \
(obj)->ob_type->tp_iternext != NULL)
DL_IMPORT(PyObject *) PyIter_Next(PyObject *);
/* Takes an iterator object and calls its tp_iternext slot,
returning the next value. If the iterator is exhausted,
this returns NULL without setting an exception.
NULL with an exception means an error occurred. */
/* Number Protocol:*/
DL_IMPORT(int) PyNumber_Check(PyObject *o);
/*
Returns 1 if the object, o, provides numeric protocols, and
false otherwise.
This function always succeeds.
*/
DL_IMPORT(PyObject *) PyNumber_Add(PyObject *o1, PyObject *o2);
/*
Returns the result of adding o1 and o2, or null on failure.
This is the equivalent of the Python expression: o1+o2.
*/
DL_IMPORT(PyObject *) PyNumber_Subtract(PyObject *o1, PyObject *o2);
/*
Returns the result of subtracting o2 from o1, or null on
failure. This is the equivalent of the Python expression:
o1-o2.
*/
DL_IMPORT(PyObject *) PyNumber_Multiply(PyObject *o1, PyObject *o2);
/*
Returns the result of multiplying o1 and o2, or null on
failure. This is the equivalent of the Python expression:
o1*o2.
*/
DL_IMPORT(PyObject *) PyNumber_Divide(PyObject *o1, PyObject *o2);
/*
Returns the result of dividing o1 by o2, or null on failure.
This is the equivalent of the Python expression: o1/o2.
*/
DL_IMPORT(PyObject *) PyNumber_FloorDivide(PyObject *o1, PyObject *o2);
/*
Returns the result of dividing o1 by o2 giving an integral result,
or null on failure.
This is the equivalent of the Python expression: o1//o2.
*/
DL_IMPORT(PyObject *) PyNumber_TrueDivide(PyObject *o1, PyObject *o2);
/*
Returns the result of dividing o1 by o2 giving a float result,
or null on failure.
This is the equivalent of the Python expression: o1/o2.
*/
DL_IMPORT(PyObject *) PyNumber_Remainder(PyObject *o1, PyObject *o2);
/*
Returns the remainder of dividing o1 by o2, or null on
failure. This is the equivalent of the Python expression:
o1%o2.
*/
DL_IMPORT(PyObject *) PyNumber_Divmod(PyObject *o1, PyObject *o2);
/*
See the built-in function divmod. Returns NULL on failure.
This is the equivalent of the Python expression:
divmod(o1,o2).
*/
DL_IMPORT(PyObject *) PyNumber_Power(PyObject *o1, PyObject *o2,
PyObject *o3);
/*
See the built-in function pow. Returns NULL on failure.
This is the equivalent of the Python expression:
pow(o1,o2,o3), where o3 is optional.
*/
DL_IMPORT(PyObject *) PyNumber_Negative(PyObject *o);
/*
Returns the negation of o on success, or null on failure.
This is the equivalent of the Python expression: -o.
*/
DL_IMPORT(PyObject *) PyNumber_Positive(PyObject *o);
/*
Returns the (what?) of o on success, or NULL on failure.
This is the equivalent of the Python expression: +o.
*/
DL_IMPORT(PyObject *) PyNumber_Absolute(PyObject *o);
/*
Returns the absolute value of o, or null on failure. This is
the equivalent of the Python expression: abs(o).
*/
DL_IMPORT(PyObject *) PyNumber_Invert(PyObject *o);
/*
Returns the bitwise negation of o on success, or NULL on
failure. This is the equivalent of the Python expression:
~o.
*/
DL_IMPORT(PyObject *) PyNumber_Lshift(PyObject *o1, PyObject *o2);
/*
Returns the result of left shifting o1 by o2 on success, or
NULL on failure. This is the equivalent of the Python
expression: o1 << o2.
*/
DL_IMPORT(PyObject *) PyNumber_Rshift(PyObject *o1, PyObject *o2);
/*
Returns the result of right shifting o1 by o2 on success, or
NULL on failure. This is the equivalent of the Python
expression: o1 >> o2.
*/
DL_IMPORT(PyObject *) PyNumber_And(PyObject *o1, PyObject *o2);
/*
Returns the result of bitwise and of o1 and o2 on success, or
NULL on failure. This is the equivalent of the Python
expression: o1&o2.
*/
DL_IMPORT(PyObject *) PyNumber_Xor(PyObject *o1, PyObject *o2);
/*
Returns the bitwise exclusive or of o1 by o2 on success, or
NULL on failure. This is the equivalent of the Python
expression: o1^o2.
*/
DL_IMPORT(PyObject *) PyNumber_Or(PyObject *o1, PyObject *o2);
/*
Returns the result of bitwise or or o1 and o2 on success, or
NULL on failure. This is the equivalent of the Python
expression: o1|o2.
*/
/* Implemented elsewhere:
int PyNumber_Coerce(PyObject **p1, PyObject **p2);
This function takes the addresses of two variables of type
PyObject*.
If the objects pointed to by *p1 and *p2 have the same type,
increment their reference count and return 0 (success).
If the objects can be converted to a common numeric type,
replace *p1 and *p2 by their converted value (with 'new'
reference counts), and return 0.
If no conversion is possible, or if some other error occurs,
return -1 (failure) and don't increment the reference counts.
The call PyNumber_Coerce(&o1, &o2) is equivalent to the Python
statement o1, o2 = coerce(o1, o2).
*/
DL_IMPORT(PyObject *) PyNumber_Int(PyObject *o);
/*
Returns the o converted to an integer object on success, or
NULL on failure. This is the equivalent of the Python
expression: int(o).
*/
DL_IMPORT(PyObject *) PyNumber_Long(PyObject *o);
/*
Returns the o converted to a long integer object on success,
or NULL on failure. This is the equivalent of the Python
expression: long(o).
*/
DL_IMPORT(PyObject *) PyNumber_Float(PyObject *o);
/*
Returns the o converted to a float object on success, or NULL
on failure. This is the equivalent of the Python expression:
float(o).
*/
/* In-place variants of (some of) the above number protocol functions */
DL_IMPORT(PyObject *) PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2);
/*
Returns the result of adding o2 to o1, possibly in-place, or null
on failure. This is the equivalent of the Python expression:
o1 += o2.
*/
DL_IMPORT(PyObject *) PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2);
/*
Returns the result of subtracting o2 from o1, possibly in-place or
null on failure. This is the equivalent of the Python expression:
o1 -= o2.
*/
DL_IMPORT(PyObject *) PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2);
/*
Returns the result of multiplying o1 by o2, possibly in-place, or
null on failure. This is the equivalent of the Python expression:
o1 *= o2.
*/
DL_IMPORT(PyObject *) PyNumber_InPlaceDivide(PyObject *o1, PyObject *o2);
/*
Returns the result of dividing o1 by o2, possibly in-place, or null
on failure. This is the equivalent of the Python expression:
o1 /= o2.
*/
DL_IMPORT(PyObject *) PyNumber_InPlaceFloorDivide(PyObject *o1,
PyObject *o2);
/*
Returns the result of dividing o1 by o2 giving an integral result,
possibly in-place, or null on failure.
This is the equivalent of the Python expression:
o1 /= o2.
*/
DL_IMPORT(PyObject *) PyNumber_InPlaceTrueDivide(PyObject *o1,
PyObject *o2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -