mirror of
https://github.com/python/cpython.git
synced 2024-11-23 01:45:25 +08:00
gh-87347: Add parenthesis around PyXXX_Check() arguments (#92815)
This commit is contained in:
parent
484b40bf18
commit
7546914e3f
@ -9,7 +9,7 @@ extern "C" {
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyBool_Type;
|
||||
|
||||
#define PyBool_Check(x) Py_IS_TYPE(x, &PyBool_Type)
|
||||
#define PyBool_Check(x) Py_IS_TYPE((x), &PyBool_Type)
|
||||
|
||||
/* Py_False and Py_True are the only two bools in existence.
|
||||
Don't forget to apply Py_INCREF() when returning either!!! */
|
||||
|
@ -21,8 +21,8 @@ PyAPI_DATA(PyTypeObject) PyByteArray_Type;
|
||||
PyAPI_DATA(PyTypeObject) PyByteArrayIter_Type;
|
||||
|
||||
/* Type check macros */
|
||||
#define PyByteArray_Check(self) PyObject_TypeCheck(self, &PyByteArray_Type)
|
||||
#define PyByteArray_CheckExact(self) Py_IS_TYPE(self, &PyByteArray_Type)
|
||||
#define PyByteArray_Check(self) PyObject_TypeCheck((self), &PyByteArray_Type)
|
||||
#define PyByteArray_CheckExact(self) Py_IS_TYPE((self), &PyByteArray_Type)
|
||||
|
||||
/* Direct API functions */
|
||||
PyAPI_FUNC(PyObject *) PyByteArray_FromObject(PyObject *);
|
||||
|
@ -29,7 +29,7 @@ PyAPI_DATA(PyTypeObject) PyBytesIter_Type;
|
||||
|
||||
#define PyBytes_Check(op) \
|
||||
PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
|
||||
#define PyBytes_CheckExact(op) Py_IS_TYPE(op, &PyBytes_Type)
|
||||
#define PyBytes_CheckExact(op) Py_IS_TYPE((op), &PyBytes_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t);
|
||||
PyAPI_FUNC(PyObject *) PyBytes_FromString(const char *);
|
||||
|
@ -10,8 +10,8 @@ extern "C" {
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyComplex_Type;
|
||||
|
||||
#define PyComplex_Check(op) PyObject_TypeCheck(op, &PyComplex_Type)
|
||||
#define PyComplex_CheckExact(op) Py_IS_TYPE(op, &PyComplex_Type)
|
||||
#define PyComplex_Check(op) PyObject_TypeCheck((op), &PyComplex_Type)
|
||||
#define PyComplex_CheckExact(op) Py_IS_TYPE((op), &PyComplex_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyComplex_FromDoubles(double real, double imag);
|
||||
|
||||
|
@ -15,7 +15,7 @@ typedef struct {
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyCell_Type;
|
||||
|
||||
#define PyCell_Check(op) Py_IS_TYPE(op, &PyCell_Type)
|
||||
#define PyCell_Check(op) Py_IS_TYPE((op), &PyCell_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyCell_New(PyObject *);
|
||||
PyAPI_FUNC(PyObject *) PyCell_Get(PyObject *);
|
||||
|
@ -19,7 +19,7 @@ typedef struct {
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyMethod_Type;
|
||||
|
||||
#define PyMethod_Check(op) Py_IS_TYPE(op, &PyMethod_Type)
|
||||
#define PyMethod_Check(op) Py_IS_TYPE((op), &PyMethod_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyMethod_New(PyObject *, PyObject *);
|
||||
|
||||
@ -40,7 +40,7 @@ typedef struct {
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyInstanceMethod_Type;
|
||||
|
||||
#define PyInstanceMethod_Check(op) Py_IS_TYPE(op, &PyInstanceMethod_Type)
|
||||
#define PyInstanceMethod_Check(op) Py_IS_TYPE((op), &PyInstanceMethod_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyInstanceMethod_New(PyObject *);
|
||||
PyAPI_FUNC(PyObject *) PyInstanceMethod_Function(PyObject *);
|
||||
|
@ -137,7 +137,7 @@ struct PyCodeObject _PyCode_DEF(1);
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyCode_Type;
|
||||
|
||||
#define PyCode_Check(op) Py_IS_TYPE(op, &PyCode_Type)
|
||||
#define PyCode_Check(op) Py_IS_TYPE((op), &PyCode_Type)
|
||||
#define PyCode_GetNumFree(op) ((op)->co_nfreevars)
|
||||
#define _PyCode_CODE(CO) ((_Py_CODEUNIT *)(CO)->co_code_adaptive)
|
||||
#define _PyCode_NBYTES(CO) (Py_SIZE(CO) * (Py_ssize_t)sizeof(_Py_CODEUNIT))
|
||||
|
@ -15,9 +15,9 @@ PyAPI_DATA(PyTypeObject) PyContextToken_Type;
|
||||
typedef struct _pycontexttokenobject PyContextToken;
|
||||
|
||||
|
||||
#define PyContext_CheckExact(o) Py_IS_TYPE(o, &PyContext_Type)
|
||||
#define PyContextVar_CheckExact(o) Py_IS_TYPE(o, &PyContextVar_Type)
|
||||
#define PyContextToken_CheckExact(o) Py_IS_TYPE(o, &PyContextToken_Type)
|
||||
#define PyContext_CheckExact(o) Py_IS_TYPE((o), &PyContext_Type)
|
||||
#define PyContextVar_CheckExact(o) Py_IS_TYPE((o), &PyContextVar_Type)
|
||||
#define PyContextToken_CheckExact(o) Py_IS_TYPE((o), &PyContextToken_Type)
|
||||
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyContext_New(void);
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyFrame_Type;
|
||||
|
||||
#define PyFrame_Check(op) Py_IS_TYPE(op, &PyFrame_Type)
|
||||
#define PyFrame_Check(op) Py_IS_TYPE((op), &PyFrame_Type)
|
||||
|
||||
PyAPI_FUNC(PyFrameObject *) PyFrame_New(PyThreadState *, PyCodeObject *,
|
||||
PyObject *, PyObject *);
|
||||
|
@ -60,7 +60,7 @@ typedef struct {
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyFunction_Type;
|
||||
|
||||
#define PyFunction_Check(op) Py_IS_TYPE(op, &PyFunction_Type)
|
||||
#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyFunction_New(PyObject *, PyObject *);
|
||||
PyAPI_FUNC(PyObject *) PyFunction_NewWithQualName(PyObject *, PyObject *, PyObject *);
|
||||
|
@ -37,8 +37,8 @@ typedef struct {
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyGen_Type;
|
||||
|
||||
#define PyGen_Check(op) PyObject_TypeCheck(op, &PyGen_Type)
|
||||
#define PyGen_CheckExact(op) Py_IS_TYPE(op, &PyGen_Type)
|
||||
#define PyGen_Check(op) PyObject_TypeCheck((op), &PyGen_Type)
|
||||
#define PyGen_CheckExact(op) Py_IS_TYPE((op), &PyGen_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyGen_New(PyFrameObject *);
|
||||
PyAPI_FUNC(PyObject *) PyGen_NewWithQualName(PyFrameObject *,
|
||||
@ -57,7 +57,7 @@ typedef struct {
|
||||
PyAPI_DATA(PyTypeObject) PyCoro_Type;
|
||||
PyAPI_DATA(PyTypeObject) _PyCoroWrapper_Type;
|
||||
|
||||
#define PyCoro_CheckExact(op) Py_IS_TYPE(op, &PyCoro_Type)
|
||||
#define PyCoro_CheckExact(op) Py_IS_TYPE((op), &PyCoro_Type)
|
||||
PyAPI_FUNC(PyObject *) PyCoro_New(PyFrameObject *,
|
||||
PyObject *name, PyObject *qualname);
|
||||
|
||||
@ -76,7 +76,7 @@ PyAPI_DATA(PyTypeObject) _PyAsyncGenAThrow_Type;
|
||||
PyAPI_FUNC(PyObject *) PyAsyncGen_New(PyFrameObject *,
|
||||
PyObject *name, PyObject *qualname);
|
||||
|
||||
#define PyAsyncGen_CheckExact(op) Py_IS_TYPE(op, &PyAsyncGen_Type)
|
||||
#define PyAsyncGen_CheckExact(op) Py_IS_TYPE((op), &PyAsyncGen_Type)
|
||||
|
||||
|
||||
#undef _PyGenObject_HEAD
|
||||
|
@ -31,8 +31,8 @@ typedef struct {
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyCMethod_Type;
|
||||
|
||||
#define PyCMethod_CheckExact(op) Py_IS_TYPE(op, &PyCMethod_Type)
|
||||
#define PyCMethod_Check(op) PyObject_TypeCheck(op, &PyCMethod_Type)
|
||||
#define PyCMethod_CheckExact(op) Py_IS_TYPE((op), &PyCMethod_Type)
|
||||
#define PyCMethod_Check(op) PyObject_TypeCheck((op), &PyCMethod_Type)
|
||||
|
||||
|
||||
/* Static inline functions for direct access to these values.
|
||||
|
@ -18,8 +18,8 @@ PyAPI_DATA(PyTypeObject) PyODictKeys_Type;
|
||||
PyAPI_DATA(PyTypeObject) PyODictItems_Type;
|
||||
PyAPI_DATA(PyTypeObject) PyODictValues_Type;
|
||||
|
||||
#define PyODict_Check(op) PyObject_TypeCheck(op, &PyODict_Type)
|
||||
#define PyODict_CheckExact(op) Py_IS_TYPE(op, &PyODict_Type)
|
||||
#define PyODict_Check(op) PyObject_TypeCheck((op), &PyODict_Type)
|
||||
#define PyODict_CheckExact(op) Py_IS_TYPE((op), &PyODict_Type)
|
||||
#define PyODict_SIZE(op) PyDict_GET_SIZE((op))
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyODict_New(void);
|
||||
|
@ -12,7 +12,7 @@ extern "C" {
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyPickleBuffer_Type;
|
||||
|
||||
#define PyPickleBuffer_Check(op) Py_IS_TYPE(op, &PyPickleBuffer_Type)
|
||||
#define PyPickleBuffer_Check(op) Py_IS_TYPE((op), &PyPickleBuffer_Type)
|
||||
|
||||
/* Create a PickleBuffer redirecting to the given buffer-enabled object */
|
||||
PyAPI_FUNC(PyObject *) PyPickleBuffer_FromObject(PyObject *);
|
||||
|
@ -16,7 +16,7 @@ PyAPI_DATA(PyTypeObject) PyDict_Type;
|
||||
|
||||
#define PyDict_Check(op) \
|
||||
PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
|
||||
#define PyDict_CheckExact(op) Py_IS_TYPE(op, &PyDict_Type)
|
||||
#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyDict_New(void);
|
||||
PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key);
|
||||
@ -67,9 +67,9 @@ PyAPI_DATA(PyTypeObject) PyDictKeys_Type;
|
||||
PyAPI_DATA(PyTypeObject) PyDictValues_Type;
|
||||
PyAPI_DATA(PyTypeObject) PyDictItems_Type;
|
||||
|
||||
#define PyDictKeys_Check(op) PyObject_TypeCheck(op, &PyDictKeys_Type)
|
||||
#define PyDictValues_Check(op) PyObject_TypeCheck(op, &PyDictValues_Type)
|
||||
#define PyDictItems_Check(op) PyObject_TypeCheck(op, &PyDictItems_Type)
|
||||
#define PyDictKeys_Check(op) PyObject_TypeCheck((op), &PyDictKeys_Type)
|
||||
#define PyDictValues_Check(op) PyObject_TypeCheck((op), &PyDictValues_Type)
|
||||
#define PyDictItems_Check(op) PyObject_TypeCheck((op), &PyDictItems_Type)
|
||||
/* This excludes Values, since they are not sets. */
|
||||
# define PyDictViewSet_Check(op) \
|
||||
(PyDictKeys_Check(op) || PyDictItems_Check(op))
|
||||
|
@ -14,7 +14,7 @@ extern "C" {
|
||||
PyAPI_DATA(PyTypeObject) PyFloat_Type;
|
||||
|
||||
#define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type)
|
||||
#define PyFloat_CheckExact(op) Py_IS_TYPE(op, &PyFloat_Type)
|
||||
#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
|
||||
|
||||
#define Py_RETURN_NAN return PyFloat_FromDouble(Py_NAN)
|
||||
|
||||
|
@ -35,7 +35,7 @@ void _PyHamt_Fini(PyInterpreterState *);
|
||||
|
||||
/* other API */
|
||||
|
||||
#define PyHamt_Check(o) Py_IS_TYPE(o, &_PyHamt_Type)
|
||||
#define PyHamt_Check(o) Py_IS_TYPE((o), &_PyHamt_Type)
|
||||
|
||||
|
||||
/* Abstract tree node. */
|
||||
|
@ -77,7 +77,7 @@ typedef struct _symtable_entry {
|
||||
|
||||
extern PyTypeObject PySTEntry_Type;
|
||||
|
||||
#define PySTEntry_Check(op) Py_IS_TYPE(op, &PySTEntry_Type)
|
||||
#define PySTEntry_Check(op) Py_IS_TYPE((op), &PySTEntry_Type)
|
||||
|
||||
extern long _PyST_GetSymbol(PySTEntryObject *, PyObject *);
|
||||
extern int _PyST_GetScope(PySTEntryObject *, PyObject *);
|
||||
|
@ -9,10 +9,10 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
extern PyTypeObject _PyUnion_Type;
|
||||
#define _PyUnion_Check(op) Py_IS_TYPE(op, &_PyUnion_Type)
|
||||
#define _PyUnion_Check(op) Py_IS_TYPE((op), &_PyUnion_Type)
|
||||
extern PyObject *_Py_union_type_or(PyObject *, PyObject *);
|
||||
|
||||
#define _PyGenericAlias_Check(op) PyObject_TypeCheck(op, &Py_GenericAliasType)
|
||||
#define _PyGenericAlias_Check(op) PyObject_TypeCheck((op), &Py_GenericAliasType)
|
||||
extern PyObject *_Py_subs_parameters(PyObject *, PyObject *, PyObject *, PyObject *);
|
||||
extern PyObject *_Py_make_parameters(PyObject *);
|
||||
extern PyObject *_Py_union_args(PyObject *self);
|
||||
|
@ -11,12 +11,12 @@ PyAPI_DATA(PyTypeObject) PyCallIter_Type;
|
||||
extern PyTypeObject _PyAnextAwaitable_Type;
|
||||
#endif
|
||||
|
||||
#define PySeqIter_Check(op) Py_IS_TYPE(op, &PySeqIter_Type)
|
||||
#define PySeqIter_Check(op) Py_IS_TYPE((op), &PySeqIter_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PySeqIter_New(PyObject *);
|
||||
|
||||
|
||||
#define PyCallIter_Check(op) Py_IS_TYPE(op, &PyCallIter_Type)
|
||||
#define PyCallIter_Check(op) Py_IS_TYPE((op), &PyCallIter_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyCallIter_New(PyObject *, PyObject *);
|
||||
|
||||
|
@ -23,7 +23,7 @@ PyAPI_DATA(PyTypeObject) PyListRevIter_Type;
|
||||
|
||||
#define PyList_Check(op) \
|
||||
PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
|
||||
#define PyList_CheckExact(op) Py_IS_TYPE(op, &PyList_Type)
|
||||
#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyList_New(Py_ssize_t size);
|
||||
PyAPI_FUNC(Py_ssize_t) PyList_Size(PyObject *);
|
||||
|
@ -11,7 +11,7 @@ PyAPI_DATA(PyTypeObject) PyLong_Type;
|
||||
|
||||
#define PyLong_Check(op) \
|
||||
PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
|
||||
#define PyLong_CheckExact(op) Py_IS_TYPE(op, &PyLong_Type)
|
||||
#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyLong_FromLong(long);
|
||||
PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLong(unsigned long);
|
||||
|
@ -11,7 +11,7 @@ PyAPI_DATA(PyTypeObject) _PyManagedBuffer_Type;
|
||||
#endif
|
||||
PyAPI_DATA(PyTypeObject) PyMemoryView_Type;
|
||||
|
||||
#define PyMemoryView_Check(op) Py_IS_TYPE(op, &PyMemoryView_Type)
|
||||
#define PyMemoryView_Check(op) Py_IS_TYPE((op), &PyMemoryView_Type)
|
||||
|
||||
#ifndef Py_LIMITED_API
|
||||
/* Get a pointer to the memoryview's private copy of the exporter's buffer. */
|
||||
|
@ -13,8 +13,8 @@ extern "C" {
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyCFunction_Type;
|
||||
|
||||
#define PyCFunction_CheckExact(op) Py_IS_TYPE(op, &PyCFunction_Type)
|
||||
#define PyCFunction_Check(op) PyObject_TypeCheck(op, &PyCFunction_Type)
|
||||
#define PyCFunction_CheckExact(op) Py_IS_TYPE((op), &PyCFunction_Type)
|
||||
#define PyCFunction_Check(op) PyObject_TypeCheck((op), &PyCFunction_Type)
|
||||
|
||||
typedef PyObject *(*PyCFunction)(PyObject *, PyObject *);
|
||||
typedef PyObject *(*_PyCFunctionFast) (PyObject *, PyObject *const *, Py_ssize_t);
|
||||
|
@ -9,8 +9,8 @@ extern "C" {
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyModule_Type;
|
||||
|
||||
#define PyModule_Check(op) PyObject_TypeCheck(op, &PyModule_Type)
|
||||
#define PyModule_CheckExact(op) Py_IS_TYPE(op, &PyModule_Type)
|
||||
#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
|
||||
#define PyModule_CheckExact(op) Py_IS_TYPE((op), &PyModule_Type)
|
||||
|
||||
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
|
||||
PyAPI_FUNC(PyObject *) PyModule_NewObject(
|
||||
|
@ -64,7 +64,7 @@ typedef struct {
|
||||
char *encoding;
|
||||
} PyCursesWindowObject;
|
||||
|
||||
#define PyCursesWindow_Check(v) Py_IS_TYPE(v, &PyCursesWindow_Type)
|
||||
#define PyCursesWindow_Check(v) Py_IS_TYPE((v), &PyCursesWindow_Type)
|
||||
|
||||
#define PyCurses_CAPSULE_NAME "_curses._C_API"
|
||||
|
||||
|
@ -22,7 +22,7 @@ PyAPI_DATA(PyTypeObject) PyCapsule_Type;
|
||||
|
||||
typedef void (*PyCapsule_Destructor)(PyObject *);
|
||||
|
||||
#define PyCapsule_CheckExact(op) Py_IS_TYPE(op, &PyCapsule_Type)
|
||||
#define PyCapsule_CheckExact(op) Py_IS_TYPE((op), &PyCapsule_Type)
|
||||
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyCapsule_New(
|
||||
|
@ -19,7 +19,7 @@ PyAPI_DATA(PyTypeObject) PyRange_Type;
|
||||
PyAPI_DATA(PyTypeObject) PyRangeIter_Type;
|
||||
PyAPI_DATA(PyTypeObject) PyLongRangeIter_Type;
|
||||
|
||||
#define PyRange_Check(op) Py_IS_TYPE(op, &PyRange_Type)
|
||||
#define PyRange_Check(op) Py_IS_TYPE((op), &PyRange_Type)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -20,21 +20,21 @@ PyAPI_FUNC(int) PySet_Discard(PyObject *set, PyObject *key);
|
||||
PyAPI_FUNC(PyObject *) PySet_Pop(PyObject *set);
|
||||
PyAPI_FUNC(Py_ssize_t) PySet_Size(PyObject *anyset);
|
||||
|
||||
#define PyFrozenSet_CheckExact(ob) Py_IS_TYPE(ob, &PyFrozenSet_Type)
|
||||
#define PyFrozenSet_CheckExact(ob) Py_IS_TYPE((ob), &PyFrozenSet_Type)
|
||||
#define PyFrozenSet_Check(ob) \
|
||||
(Py_IS_TYPE(ob, &PyFrozenSet_Type) || \
|
||||
(Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
|
||||
PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
|
||||
|
||||
#define PyAnySet_CheckExact(ob) \
|
||||
(Py_IS_TYPE(ob, &PySet_Type) || Py_IS_TYPE(ob, &PyFrozenSet_Type))
|
||||
(Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type))
|
||||
#define PyAnySet_Check(ob) \
|
||||
(Py_IS_TYPE(ob, &PySet_Type) || Py_IS_TYPE(ob, &PyFrozenSet_Type) || \
|
||||
(Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
|
||||
PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \
|
||||
PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
|
||||
|
||||
#define PySet_CheckExact(op) Py_IS_TYPE(op, &PySet_Type)
|
||||
#define PySet_Check(ob) \
|
||||
(Py_IS_TYPE(ob, &PySet_Type) || \
|
||||
(Py_IS_TYPE((ob), &PySet_Type) || \
|
||||
PyType_IsSubtype(Py_TYPE(ob), &PySet_Type))
|
||||
|
||||
#ifndef Py_LIMITED_API
|
||||
|
@ -28,7 +28,7 @@ typedef struct {
|
||||
PyAPI_DATA(PyTypeObject) PySlice_Type;
|
||||
PyAPI_DATA(PyTypeObject) PyEllipsis_Type;
|
||||
|
||||
#define PySlice_Check(op) Py_IS_TYPE(op, &PySlice_Type)
|
||||
#define PySlice_Check(op) Py_IS_TYPE((op), &PySlice_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PySlice_New(PyObject* start, PyObject* stop,
|
||||
PyObject* step);
|
||||
|
@ -11,7 +11,7 @@ PyAPI_FUNC(int) PyTraceBack_Print(PyObject *, PyObject *);
|
||||
|
||||
/* Reveal traceback type so we can typecheck traceback objects */
|
||||
PyAPI_DATA(PyTypeObject) PyTraceBack_Type;
|
||||
#define PyTraceBack_Check(v) Py_IS_TYPE(v, &PyTraceBack_Type)
|
||||
#define PyTraceBack_Check(v) Py_IS_TYPE((v), &PyTraceBack_Type)
|
||||
|
||||
|
||||
#ifndef Py_LIMITED_API
|
||||
|
@ -25,7 +25,7 @@ PyAPI_DATA(PyTypeObject) PyTupleIter_Type;
|
||||
|
||||
#define PyTuple_Check(op) \
|
||||
PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
|
||||
#define PyTuple_CheckExact(op) Py_IS_TYPE(op, &PyTuple_Type)
|
||||
#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
|
||||
|
||||
PyAPI_FUNC(PyObject *) PyTuple_New(Py_ssize_t size);
|
||||
PyAPI_FUNC(Py_ssize_t) PyTuple_Size(PyObject *);
|
||||
|
@ -113,7 +113,7 @@ PyAPI_DATA(PyTypeObject) PyUnicodeIter_Type;
|
||||
|
||||
#define PyUnicode_Check(op) \
|
||||
PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
|
||||
#define PyUnicode_CheckExact(op) Py_IS_TYPE(op, &PyUnicode_Type)
|
||||
#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
|
||||
|
||||
/* --- Constants ---------------------------------------------------------- */
|
||||
|
||||
|
@ -12,12 +12,12 @@ PyAPI_DATA(PyTypeObject) _PyWeakref_RefType;
|
||||
PyAPI_DATA(PyTypeObject) _PyWeakref_ProxyType;
|
||||
PyAPI_DATA(PyTypeObject) _PyWeakref_CallableProxyType;
|
||||
|
||||
#define PyWeakref_CheckRef(op) PyObject_TypeCheck(op, &_PyWeakref_RefType)
|
||||
#define PyWeakref_CheckRef(op) PyObject_TypeCheck((op), &_PyWeakref_RefType)
|
||||
#define PyWeakref_CheckRefExact(op) \
|
||||
Py_IS_TYPE(op, &_PyWeakref_RefType)
|
||||
Py_IS_TYPE((op), &_PyWeakref_RefType)
|
||||
#define PyWeakref_CheckProxy(op) \
|
||||
(Py_IS_TYPE(op, &_PyWeakref_ProxyType) || \
|
||||
Py_IS_TYPE(op, &_PyWeakref_CallableProxyType))
|
||||
(Py_IS_TYPE((op), &_PyWeakref_ProxyType) \
|
||||
|| Py_IS_TYPE((op), &_PyWeakref_CallableProxyType))
|
||||
|
||||
#define PyWeakref_Check(op) \
|
||||
(PyWeakref_CheckRef(op) || PyWeakref_CheckProxy(op))
|
||||
|
Loading…
Reference in New Issue
Block a user