mirror of https://github.com/python/cpython
gh-106320: Remove private _PyLong_Sign() (#108743)
Move the private _PyLong_Sign() and _PyLong_NumBits() functions to the internal C API (pycore_long.h). Modules/_testcapi/long.c now uses the internal C API.
This commit is contained in:
parent
c1e2f3b2f7
commit
3edcf743e8
|
@ -4,21 +4,6 @@
|
||||||
|
|
||||||
PyAPI_FUNC(PyObject*) PyLong_FromUnicodeObject(PyObject *u, int base);
|
PyAPI_FUNC(PyObject*) PyLong_FromUnicodeObject(PyObject *u, int base);
|
||||||
|
|
||||||
/* _PyLong_Sign. Return 0 if v is 0, -1 if v < 0, +1 if v > 0.
|
|
||||||
v must not be NULL, and must be a normalized long.
|
|
||||||
There are no error cases.
|
|
||||||
*/
|
|
||||||
PyAPI_FUNC(int) _PyLong_Sign(PyObject *v);
|
|
||||||
|
|
||||||
/* _PyLong_NumBits. Return the number of bits needed to represent the
|
|
||||||
absolute value of a long. For example, this returns 1 for 1 and -1, 2
|
|
||||||
for 2 and -2, and 2 for 3 and -3. It returns 0 for 0.
|
|
||||||
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);
|
|
||||||
|
|
||||||
PyAPI_FUNC(int) PyUnstable_Long_IsCompact(const PyLongObject* op);
|
PyAPI_FUNC(int) PyUnstable_Long_IsCompact(const PyLongObject* op);
|
||||||
PyAPI_FUNC(Py_ssize_t) PyUnstable_Long_CompactValue(const PyLongObject* op);
|
PyAPI_FUNC(Py_ssize_t) PyUnstable_Long_CompactValue(const PyLongObject* op);
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,23 @@ PyAPI_FUNC(PyLongObject*) _PyLong_FromDigits(
|
||||||
Py_ssize_t digit_count,
|
Py_ssize_t digit_count,
|
||||||
digit *digits);
|
digit *digits);
|
||||||
|
|
||||||
|
// _PyLong_Sign. Return 0 if v is 0, -1 if v < 0, +1 if v > 0.
|
||||||
|
// v must not be NULL, and must be a normalized long.
|
||||||
|
// There are no error cases.
|
||||||
|
//
|
||||||
|
// Export for '_pickle' shared extension.
|
||||||
|
PyAPI_FUNC(int) _PyLong_Sign(PyObject *v);
|
||||||
|
|
||||||
|
// _PyLong_NumBits. Return the number of bits needed to represent the
|
||||||
|
// absolute value of a long. For example, this returns 1 for 1 and -1, 2
|
||||||
|
// for 2 and -2, and 2 for 3 and -3. It returns 0 for 0.
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// Export for 'math' shared extension.
|
||||||
|
PyAPI_FUNC(size_t) _PyLong_NumBits(PyObject *v);
|
||||||
|
|
||||||
|
|
||||||
/* runtime lifecycle */
|
/* runtime lifecycle */
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
#include "pycore_abstract.h" // _PyNumber_Index()
|
#include "pycore_abstract.h" // _PyNumber_Index()
|
||||||
#include "pycore_initconfig.h" // _PyStatus_OK()
|
#include "pycore_initconfig.h" // _PyStatus_OK()
|
||||||
|
#include "pycore_long.h" // _PyLong_Sign()
|
||||||
#include "pycore_pyerrors.h" // _PyErr_ChainExceptions1()
|
#include "pycore_pyerrors.h" // _PyErr_ChainExceptions1()
|
||||||
#include "pycore_pystate.h" // _PyInterpreterState_GET()
|
#include "pycore_pystate.h" // _PyInterpreterState_GET()
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
|
#ifndef Py_BUILD_CORE_BUILTIN
|
||||||
|
# define Py_BUILD_CORE_MODULE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "parts.h"
|
#include "parts.h"
|
||||||
#include "clinic/long.c.h"
|
#include "clinic/long.c.h"
|
||||||
|
#include "pycore_long.h" // _PyLong_Sign()
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
module _testcapi
|
module _testcapi
|
||||||
|
|
Loading…
Reference in New Issue