mirror of https://github.com/python/cpython
Issue #11067: Add PyType_GetFlags, to support PyUnicode_Check
in the limited ABI
This commit is contained in:
parent
9b142aaae8
commit
738236dbd6
|
@ -35,6 +35,14 @@ Type Objects
|
||||||
|
|
||||||
Clear the internal lookup cache. Return the current version tag.
|
Clear the internal lookup cache. Return the current version tag.
|
||||||
|
|
||||||
|
.. c:function:: long PyType_GetFlags(PyTypeObject* type)
|
||||||
|
|
||||||
|
Return the :attr:`tp_flags` member of *type*. This function is primarily
|
||||||
|
meant for use with `Py_LIMITED_API`; the individual flag bits are
|
||||||
|
guaranteed to be stable across Python releases, but access to
|
||||||
|
:attr:`tp_flags` itself is not part of the limited API.
|
||||||
|
|
||||||
|
.. versionadded:: 3.2
|
||||||
|
|
||||||
.. c:function:: void PyType_Modified(PyTypeObject *type)
|
.. c:function:: void PyType_Modified(PyTypeObject *type)
|
||||||
|
|
||||||
|
|
|
@ -437,6 +437,8 @@ PyAPI_DATA(PyTypeObject) PyType_Type; /* built-in 'type' */
|
||||||
PyAPI_DATA(PyTypeObject) PyBaseObject_Type; /* built-in 'object' */
|
PyAPI_DATA(PyTypeObject) PyBaseObject_Type; /* built-in 'object' */
|
||||||
PyAPI_DATA(PyTypeObject) PySuper_Type; /* built-in 'super' */
|
PyAPI_DATA(PyTypeObject) PySuper_Type; /* built-in 'super' */
|
||||||
|
|
||||||
|
PyAPI_FUNC(long) PyType_GetFlags(PyTypeObject*);
|
||||||
|
|
||||||
#define PyType_Check(op) \
|
#define PyType_Check(op) \
|
||||||
PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS)
|
PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS)
|
||||||
#define PyType_CheckExact(op) (Py_TYPE(op) == &PyType_Type)
|
#define PyType_CheckExact(op) (Py_TYPE(op) == &PyType_Type)
|
||||||
|
@ -589,7 +591,11 @@ given type object has a specified feature.
|
||||||
Py_TPFLAGS_HAVE_VERSION_TAG | \
|
Py_TPFLAGS_HAVE_VERSION_TAG | \
|
||||||
0)
|
0)
|
||||||
|
|
||||||
|
#ifdef Py_LIMITED_API
|
||||||
|
#define PyType_HasFeature(t,f) ((PyType_GetFlags(t) & (f)) != 0)
|
||||||
|
#else
|
||||||
#define PyType_HasFeature(t,f) (((t)->tp_flags & (f)) != 0)
|
#define PyType_HasFeature(t,f) (((t)->tp_flags & (f)) != 0)
|
||||||
|
#endif
|
||||||
#define PyType_FastSubclass(t,f) PyType_HasFeature(t,f)
|
#define PyType_FastSubclass(t,f) PyType_HasFeature(t,f)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,9 @@ What's New in Python 3.2?
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #11067: Add PyType_GetFlags, to support PyUnicode_Check
|
||||||
|
in the limited ABI.
|
||||||
|
|
||||||
- Issue #11118: Fix bogus export of None in python3.dll.
|
- Issue #11118: Fix bogus export of None in python3.dll.
|
||||||
|
|
||||||
Library
|
Library
|
||||||
|
|
|
@ -50,8 +50,14 @@ Xxo_dealloc(XxoObject *self)
|
||||||
static PyObject *
|
static PyObject *
|
||||||
Xxo_demo(XxoObject *self, PyObject *args)
|
Xxo_demo(XxoObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
if (!PyArg_ParseTuple(args, ":demo"))
|
PyObject *o = NULL;
|
||||||
|
if (!PyArg_ParseTuple(args, "|O:demo", &o))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
/* Test availability of fast type checks */
|
||||||
|
if (o != NULL && PyUnicode_Check(o)) {
|
||||||
|
Py_INCREF(o);
|
||||||
|
return o;
|
||||||
|
}
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1904,6 +1904,12 @@ type_init(PyObject *cls, PyObject *args, PyObject *kwds)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
PyType_GetFlags(PyTypeObject *type)
|
||||||
|
{
|
||||||
|
return type->tp_flags;
|
||||||
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds)
|
type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds)
|
||||||
{
|
{
|
||||||
|
|
|
@ -513,6 +513,7 @@ EXPORTS
|
||||||
PyType_FromSpec=python32.PyType_FromSpec
|
PyType_FromSpec=python32.PyType_FromSpec
|
||||||
PyType_GenericAlloc=python32.PyType_GenericAlloc
|
PyType_GenericAlloc=python32.PyType_GenericAlloc
|
||||||
PyType_GenericNew=python32.PyType_GenericNew
|
PyType_GenericNew=python32.PyType_GenericNew
|
||||||
|
PyType_GetFlags=python32.PyType_GetFlags
|
||||||
PyType_IsSubtype=python32.PyType_IsSubtype
|
PyType_IsSubtype=python32.PyType_IsSubtype
|
||||||
PyType_Modified=python32.PyType_Modified
|
PyType_Modified=python32.PyType_Modified
|
||||||
PyType_Ready=python32.PyType_Ready
|
PyType_Ready=python32.PyType_Ready
|
||||||
|
|
|
@ -513,6 +513,7 @@ PyType_ClearCache
|
||||||
PyType_FromSpec
|
PyType_FromSpec
|
||||||
PyType_GenericAlloc
|
PyType_GenericAlloc
|
||||||
PyType_GenericNew
|
PyType_GenericNew
|
||||||
|
PyType_GetFlags
|
||||||
PyType_IsSubtype
|
PyType_IsSubtype
|
||||||
PyType_Modified
|
PyType_Modified
|
||||||
PyType_Ready
|
PyType_Ready
|
||||||
|
|
Loading…
Reference in New Issue