mirror of
https://github.com/python/cpython.git
synced 2026-01-21 06:40:15 +00:00
gh-127787: refactor helpers for PyUnicodeErrorObject internal interface (GH-127789)
- Unify `get_unicode` and `get_string` in a single function.
- Allow to retrieve the underlying `object` attribute, its
size, and the adjusted 'start' and 'end', all at once.
Add a new `_PyUnicodeError_GetParams` internal function for this.
(In `exceptions.c`, it's somewhat common to not need all the attributes,
but the compiler has opportunity to inline the function and optimize
unneeded work away. Outside that file, we'll usually need all or
most of them at once.)
- Use a common implementation for the following functions:
- `PyUnicode{Decode,Encode}Error_GetEncoding`
- `PyUnicode{Decode,Encode,Translate}Error_GetObject`
- `PyUnicode{Decode,Encode,Translate}Error_{Get,Set}Reason`
- `PyUnicode{Decode,Encode,Translate}Error_{Get,Set}{Start,End}`
This commit is contained in:
parent
8abd6cef68
commit
fa985bee61
2 changed files with 297 additions and 159 deletions
|
|
@ -94,6 +94,12 @@ PyAPI_FUNC(void) _PyErr_ChainExceptions1(PyObject *);
|
|||
|
||||
/* In exceptions.c */
|
||||
|
||||
PyAPI_FUNC(int) _PyUnicodeError_GetParams(
|
||||
PyObject *self,
|
||||
PyObject **obj, Py_ssize_t *objlen,
|
||||
Py_ssize_t *start, Py_ssize_t *end,
|
||||
int as_bytes);
|
||||
|
||||
PyAPI_FUNC(PyObject*) PyUnstable_Exc_PrepReraiseStar(
|
||||
PyObject *orig,
|
||||
PyObject *excs);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue