mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Added new private API function _PyLong_NumBits. This will be used at the
start for the C implemention of new pickle LONG1 and LONG4 opcodes (the linear-time way to pickle a long is to call _PyLong_AsByteArray, but the caller has no idea how big an array to allocate, and correct calculation is a bit subtle).
This commit is contained in:
parent
3d8c01b31c
commit
baefd9e552
3 changed files with 85 additions and 2 deletions
|
@ -44,6 +44,17 @@ PyAPI_FUNC(PyObject *) PyLong_FromString(char *, char **, int);
|
|||
PyAPI_FUNC(PyObject *) PyLong_FromUnicode(Py_UNICODE*, int, int);
|
||||
#endif
|
||||
|
||||
/* _PyLong_NumBits. Return the number of bits needed to represent a long
|
||||
in contiguous 2's-complement form, including 1 for the sign bit. For
|
||||
example, this returns 1 for 0, and 2 for 1 and -1. Note that the
|
||||
ceiling of this divided by 8 is the number of bytes needed by
|
||||
_PyLong_AsByteArray to store the long in 256's-complement form.
|
||||
v must not be NULL, and must be a normalized long.
|
||||
(size_t)-1 is returned and OverflowError set if the true result doesn't
|
||||
fit in a size_t.
|
||||
*/
|
||||
PyAPI_FUNC(size_t) _PyLong_NumBits(PyObject *v);
|
||||
|
||||
/* _PyLong_FromByteArray: View the n unsigned bytes as a binary integer in
|
||||
base 256, and return a Python long with the same numeric value.
|
||||
If n is 0, the integer is 0. Else:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue