PEP 757: edit rejected ideas (mpz_import/export-like API) (#4126)
This commit is contained in:
parent
a1591857f6
commit
5c58fe2f4a
|
@ -452,11 +452,17 @@ API example::
|
|||
int PyLong_Export(PyLongObject *obj, PyLongLayout layout, void *buffer);
|
||||
PyLongObject *PyLong_Import(PyLongLayout layout, void *buffer);
|
||||
|
||||
This might work for the GMP, as this it has :c:func:`!mpz_limbs_read()` and
|
||||
:c:func:`!mpz_limbs_write()` functions, that can provide required "buffers".
|
||||
This might work for the GMP, as it has :c:func:`!mpz_limbs_read()` and
|
||||
:c:func:`!mpz_limbs_write()` functions, that can provide required access to
|
||||
internals of :c:struct:`!mpz_t`. Other libraries may require using temporary
|
||||
bufferes and then mpz_import/export-like functions on their side.
|
||||
|
||||
The major drawback of this approach is that it's much more complex on the
|
||||
CPython side (i.e. actual conversion between different layouts).
|
||||
CPython side (i.e. actual conversion between different layouts). For example,
|
||||
implementation of the :c:func:`PyLong_FromNativeBytes()` and the
|
||||
:c:func:`PyLong_AsNativeBytes()` (together provided restricted version of the
|
||||
required API) in the CPython took ~500 LOC (c.f. ~100 LOC in the current
|
||||
implementation).
|
||||
|
||||
|
||||
Discussions
|
||||
|
|
Loading…
Reference in New Issue