mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
gh-139165: Make Py_SIZE, Py_IS_TYPE,Py_ SET_SIZE regular functions in stable ABI (GH-139166)
* Make Py_{SIZE,IS_TYPE,SET_SIZE} regular functions in stable ABI
Group them together with Py_TYPE & Py_SET_TYPE to cut down
on repetitive preprocessor macros.
Format repetitive definitions in object.c more concisely.
Py_SET_TYPE is still left out of the Limited API.
This commit is contained in:
parent
e6174ee981
commit
226011ba12
7 changed files with 92 additions and 61 deletions
|
|
@ -3361,24 +3361,6 @@ Py_GetConstantBorrowed(unsigned int constant_id)
|
|||
return Py_GetConstant(constant_id);
|
||||
}
|
||||
|
||||
|
||||
// Py_TYPE() implementation for the stable ABI
|
||||
#undef Py_TYPE
|
||||
PyTypeObject*
|
||||
Py_TYPE(PyObject *ob)
|
||||
{
|
||||
return _Py_TYPE(ob);
|
||||
}
|
||||
|
||||
|
||||
// Py_REFCNT() implementation for the stable ABI
|
||||
#undef Py_REFCNT
|
||||
Py_ssize_t
|
||||
Py_REFCNT(PyObject *ob)
|
||||
{
|
||||
return _Py_REFCNT(ob);
|
||||
}
|
||||
|
||||
int
|
||||
PyUnstable_IsImmortal(PyObject *op)
|
||||
{
|
||||
|
|
@ -3405,3 +3387,16 @@ _PyObject_VisitType(PyObject *op, visitproc visit, void *arg)
|
|||
Py_VISIT(tp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Implementations for the stable ABI
|
||||
// Keep these at the end.
|
||||
#undef Py_TYPE
|
||||
#undef Py_REFCNT
|
||||
#undef Py_SIZE
|
||||
#undef Py_IS_TYPE
|
||||
#undef Py_SET_SIZE
|
||||
PyTypeObject* Py_TYPE(PyObject *ob) { return _Py_TYPE_impl(ob); }
|
||||
Py_ssize_t Py_REFCNT(PyObject *ob) { return _Py_REFCNT(ob); }
|
||||
Py_ssize_t Py_SIZE(PyObject *o) { return _Py_SIZE_impl(o); }
|
||||
int Py_IS_TYPE(PyObject *o, PyTypeObject *t) { return _Py_IS_TYPE_impl(o, t); }
|
||||
void Py_SET_SIZE(PyVarObject *o, Py_ssize_t s) { _Py_SET_SIZE_impl(o, s); }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue