diff options
Diffstat (limited to 'Include')
-rw-r--r-- | Include/abstract.h | 15 | ||||
-rw-r--r-- | Include/objimpl.h | 4 | ||||
-rw-r--r-- | Include/pyerrors.h | 4 |
3 files changed, 23 insertions, 0 deletions
diff --git a/Include/abstract.h b/Include/abstract.h index 4088f75..e7bc2d2 100644 --- a/Include/abstract.h +++ b/Include/abstract.h @@ -590,9 +590,16 @@ PyAPI_FUNC(PyObject *) PyObject_Format(PyObject *obj, returns itself. */ PyAPI_FUNC(PyObject *) PyObject_GetIter(PyObject *); +/* Returns 1 if the object 'obj' provides iterator protocols, and 0 otherwise. + + This function always succeeds. */ +#ifndef Py_LIMITED_API #define PyIter_Check(obj) \ ((obj)->ob_type->tp_iternext != NULL && \ (obj)->ob_type->tp_iternext != &_PyObject_NextNotImplemented) +#else +PyAPI_FUNC(int) PyIter_Check(PyObject*); +#endif /* Takes an iterator object and calls its tp_iternext slot, returning the next value. @@ -710,9 +717,15 @@ PyAPI_FUNC(PyObject *) PyNumber_Xor(PyObject *o1, PyObject *o2); This is the equivalent of the Python expression: o1 | o2. */ PyAPI_FUNC(PyObject *) PyNumber_Or(PyObject *o1, PyObject *o2); +/* Returns 1 if obj is an index integer (has the nb_index slot of the + tp_as_number structure filled in), and 0 otherwise. */ +#ifndef Py_LIMITED_API #define PyIndex_Check(obj) \ ((obj)->ob_type->tp_as_number != NULL && \ (obj)->ob_type->tp_as_number->nb_index != NULL) +#else +PyAPI_FUNC(int) PyIndex_Check(PyObject *); +#endif /* Returns the object 'o' converted to a Python int, or NULL with an exception raised on failure. */ @@ -921,8 +934,10 @@ PyAPI_FUNC(PyObject *) PySequence_Fast(PyObject *o, const char* m); /* Assume tp_as_sequence and sq_item exist and that 'i' does not need to be corrected for a negative index. */ +#ifndef Py_LIMITED_API #define PySequence_ITEM(o, i)\ ( Py_TYPE(o)->tp_as_sequence->sq_item(o, i) ) +#endif /* Return a pointer to the underlying item array for an object retured by PySequence_Fast */ diff --git a/Include/objimpl.h b/Include/objimpl.h index 057bb50..a38906c 100644 --- a/Include/objimpl.h +++ b/Include/objimpl.h @@ -240,8 +240,10 @@ PyAPI_FUNC(Py_ssize_t) _PyGC_CollectIfEnabled(void); #define PyType_IS_GC(t) PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC) /* Test if an object has a GC head */ +#ifndef Py_LIMITED_API #define PyObject_IS_GC(o) (PyType_IS_GC(Py_TYPE(o)) && \ (Py_TYPE(o)->tp_is_gc == NULL || Py_TYPE(o)->tp_is_gc(o))) +#endif PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t); #define PyObject_GC_Resize(type, op, n) \ @@ -359,10 +361,12 @@ PyAPI_FUNC(void) PyObject_GC_Del(void *); /* Test if a type supports weak references */ +#ifndef Py_LIMITED_API #define PyType_SUPPORTS_WEAKREFS(t) ((t)->tp_weaklistoffset > 0) #define PyObject_GET_WEAKREFS_LISTPTR(o) \ ((PyObject **) (((char *) (o)) + Py_TYPE(o)->tp_weaklistoffset)) +#endif #ifdef __cplusplus } diff --git a/Include/pyerrors.h b/Include/pyerrors.h index f289471..a9929f5 100644 --- a/Include/pyerrors.h +++ b/Include/pyerrors.h @@ -140,8 +140,12 @@ PyAPI_FUNC(void) _PyErr_ChainExceptions(PyObject *, PyObject *, PyObject *); #define PyExceptionInstance_Check(x) \ PyType_FastSubclass((x)->ob_type, Py_TPFLAGS_BASE_EXC_SUBCLASS) +#ifndef Py_LIMITED_API #define PyExceptionClass_Name(x) \ ((char *)(((PyTypeObject*)(x))->tp_name)) +#else + PyAPI_FUNC(char *) PyExceptionClass_Name(PyObject*); +#endif #define PyExceptionInstance_Class(x) ((PyObject*)((x)->ob_type)) |