mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
Use a type flag to determine the applicability of the tp_weaklistoffset
field. This should avoid binary incompatibility problems with older modules that have not been recompiled.
This commit is contained in:
parent
26d1f14433
commit
033f31270c
2 changed files with 10 additions and 1 deletions
|
@ -344,11 +344,18 @@ given type object has a specified feature.
|
||||||
|
|
||||||
#define Py_TPFLAGS_HAVE_RICHCOMPARE (1L<<5)
|
#define Py_TPFLAGS_HAVE_RICHCOMPARE (1L<<5)
|
||||||
|
|
||||||
|
/* Objects which are weakly referencable if their tp_weaklistoffset is >0 */
|
||||||
|
/* XXX Should this have the same value as Py_TPFLAGS_HAVE_RICHCOMPARE?
|
||||||
|
* These both indicate a feature that appeared in the same alpha release.
|
||||||
|
*/
|
||||||
|
#define Py_TPFLAGS_HAVE_WEAKREFS (1L<<6)
|
||||||
|
|
||||||
#define Py_TPFLAGS_DEFAULT ( \
|
#define Py_TPFLAGS_DEFAULT ( \
|
||||||
Py_TPFLAGS_HAVE_GETCHARBUFFER | \
|
Py_TPFLAGS_HAVE_GETCHARBUFFER | \
|
||||||
Py_TPFLAGS_HAVE_SEQUENCE_IN | \
|
Py_TPFLAGS_HAVE_SEQUENCE_IN | \
|
||||||
Py_TPFLAGS_HAVE_INPLACEOPS | \
|
Py_TPFLAGS_HAVE_INPLACEOPS | \
|
||||||
Py_TPFLAGS_HAVE_RICHCOMPARE | \
|
Py_TPFLAGS_HAVE_RICHCOMPARE | \
|
||||||
|
Py_TPFLAGS_HAVE_WEAKREFS | \
|
||||||
0)
|
0)
|
||||||
|
|
||||||
#define PyType_HasFeature(t,f) (((t)->tp_flags & (f)) != 0)
|
#define PyType_HasFeature(t,f) (((t)->tp_flags & (f)) != 0)
|
||||||
|
|
|
@ -271,7 +271,9 @@ extern DL_IMPORT(void) _PyGC_Dump(PyGC_Head *);
|
||||||
#endif /* WITH_CYCLE_GC */
|
#endif /* WITH_CYCLE_GC */
|
||||||
|
|
||||||
/* Test if a type supports weak references */
|
/* Test if a type supports weak references */
|
||||||
#define PyType_SUPPORTS_WEAKREFS(t) ((t)->tp_weaklistoffset > 0)
|
#define PyType_SUPPORTS_WEAKREFS(t) \
|
||||||
|
(PyType_HasFeature((t), Py_TPFLAGS_HAVE_WEAKREFS) \
|
||||||
|
&& ((t)->tp_weaklistoffset > 0))
|
||||||
|
|
||||||
#define PyObject_GET_WEAKREFS_LISTPTR(o) \
|
#define PyObject_GET_WEAKREFS_LISTPTR(o) \
|
||||||
((PyObject **) (((char *) (o)) + (o)->ob_type->tp_weaklistoffset))
|
((PyObject **) (((char *) (o)) + (o)->ob_type->tp_weaklistoffset))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue