同步操作将从 OpenHarmony-SIG/python 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#ifndef Py_LIMITED_API#ifndef Py_LONGINTREPR_H#define Py_LONGINTREPR_H#ifdef __cplusplusextern "C" {#endif/* This is published for the benefit of "friends" marshal.c and _decimal.c. *//* Parameters of the integer representation. There are two differentsets of parameters: one set for 30-bit digits, stored in an unsigned 32-bitinteger type, and one set for 15-bit digits with each digit stored in anunsigned short. The value of PYLONG_BITS_IN_DIGIT, defined either atconfigure time or in pyport.h, is used to decide which digit size to use.Type 'digit' should be able to hold 2*PyLong_BASE-1, and type 'twodigits'should be an unsigned integer type able to hold all integers up toPyLong_BASE*PyLong_BASE-1. x_sub assumes that 'digit' is an unsigned type,and that overflow is handled by taking the result modulo 2**N for some N >PyLong_SHIFT. The majority of the code doesn't care about the precisevalue of PyLong_SHIFT, but there are some notable exceptions:- long_pow() requires that PyLong_SHIFT be divisible by 5- PyLong_{As,From}ByteArray require that PyLong_SHIFT be at least 8- long_hash() requires that PyLong_SHIFT is *strictly* less than the numberof bits in an unsigned long, as do the PyLong <-> long (or unsigned long)conversion functions- the Python int <-> size_t/Py_ssize_t conversion functions expect thatPyLong_SHIFT is strictly less than the number of bits in a size_t- the marshal code currently expects that PyLong_SHIFT is a multiple of 15- NSMALLNEGINTS and NSMALLPOSINTS should be small enough to fit in a singledigit; with the current values this forces PyLong_SHIFT >= 9The values 15 and 30 should fit all of the above requirements, on anyplatform.*/#if PYLONG_BITS_IN_DIGIT == 30typedef uint32_t digit;typedef int32_t sdigit; /* signed variant of digit */typedef uint64_t twodigits;typedef int64_t stwodigits; /* signed variant of twodigits */#define PyLong_SHIFT 30#define _PyLong_DECIMAL_SHIFT 9 /* max(e such that 10**e fits in a digit) */#define _PyLong_DECIMAL_BASE ((digit)1000000000) /* 10 ** DECIMAL_SHIFT */#elif PYLONG_BITS_IN_DIGIT == 15typedef unsigned short digit;typedef short sdigit; /* signed variant of digit */typedef unsigned long twodigits;typedef long stwodigits; /* signed variant of twodigits */#define PyLong_SHIFT 15#define _PyLong_DECIMAL_SHIFT 4 /* max(e such that 10**e fits in a digit) */#define _PyLong_DECIMAL_BASE ((digit)10000) /* 10 ** DECIMAL_SHIFT */#else#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"#endif#define PyLong_BASE ((digit)1 << PyLong_SHIFT)#define PyLong_MASK ((digit)(PyLong_BASE - 1))#if PyLong_SHIFT % 5 != 0#error "longobject.c requires that PyLong_SHIFT be divisible by 5"#endif/* Long integer representation.The absolute value of a number is equal toSUM(for i=0 through abs(ob_size)-1) ob_digit[i] * 2**(SHIFT*i)Negative numbers are represented with ob_size < 0;zero is represented by ob_size == 0.In a normalized number, ob_digit[abs(ob_size)-1] (the most significantdigit) is never zero. Also, in all cases, for all valid i,0 <= ob_digit[i] <= MASK.The allocation function takes care of allocating extra memoryso that ob_digit[0] ... ob_digit[abs(ob_size)-1] are actually available.CAUTION: Generic code manipulating subtypes of PyVarObject has toaware that ints abuse ob_size's sign bit.*/struct _longobject {PyObject_VAR_HEADdigit ob_digit[1];};PyAPI_FUNC(PyLongObject *) _PyLong_New(Py_ssize_t);/* Return a copy of src. */PyAPI_FUNC(PyObject *) _PyLong_Copy(PyLongObject *src);#ifdef __cplusplus}#endif#endif /* !Py_LONGINTREPR_H */#endif /* Py_LIMITED_API */
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。