mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
bpo-47164: Add _PyASCIIObject_CAST() macro (GH-32191)
Add macros to cast objects to PyASCIIObject*, PyCompactUnicodeObject* and PyUnicodeObject*: _PyASCIIObject_CAST(), _PyCompactUnicodeObject_CAST() and _PyUnicodeObject_CAST(). Using these new macros make the code more readable and check their argument with: assert(PyUnicode_Check(op)). Remove redundant assert(PyUnicode_Check(op)) in macros using directly or indirectly these new CAST macros. Replacing existing casts with these macros.
This commit is contained in:
parent
db4dada510
commit
c14d7e4b81
8 changed files with 76 additions and 78 deletions
|
@ -1073,7 +1073,7 @@ _Py_DumpHexadecimal(int fd, uintptr_t value, Py_ssize_t width)
|
|||
void
|
||||
_Py_DumpASCII(int fd, PyObject *text)
|
||||
{
|
||||
PyASCIIObject *ascii = (PyASCIIObject *)text;
|
||||
PyASCIIObject *ascii = _PyASCIIObject_CAST(text);
|
||||
Py_ssize_t i, size;
|
||||
int truncated;
|
||||
int kind;
|
||||
|
@ -1087,19 +1087,19 @@ _Py_DumpASCII(int fd, PyObject *text)
|
|||
size = ascii->length;
|
||||
kind = ascii->state.kind;
|
||||
if (kind == PyUnicode_WCHAR_KIND) {
|
||||
wstr = ((PyASCIIObject *)text)->wstr;
|
||||
wstr = ascii->wstr;
|
||||
if (wstr == NULL)
|
||||
return;
|
||||
size = ((PyCompactUnicodeObject *)text)->wstr_length;
|
||||
size = _PyCompactUnicodeObject_CAST(text)->wstr_length;
|
||||
}
|
||||
else if (ascii->state.compact) {
|
||||
if (ascii->state.ascii)
|
||||
data = ((PyASCIIObject*)text) + 1;
|
||||
data = ascii + 1;
|
||||
else
|
||||
data = ((PyCompactUnicodeObject*)text) + 1;
|
||||
data = _PyCompactUnicodeObject_CAST(text) + 1;
|
||||
}
|
||||
else {
|
||||
data = ((PyUnicodeObject *)text)->data.any;
|
||||
data = _PyUnicodeObject_CAST(text)->data.any;
|
||||
if (data == NULL)
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue