Where Online Learning is simpler!
The C and C++ Include Header Files
cat -n /usr/include/python3.14/cpython/longobject.h
1 #ifndef Py_CPYTHON_LONGOBJECT_H 2 # error "this header file must not be included directly" 3 #endif 4 5 #define _PyLong_CAST(op) \ 6 (assert(PyLong_Check(op)), _Py_CAST(PyLongObject*, (op))) 7 8 PyAPI_FUNC(PyObject*) PyLong_FromUnicodeObject(PyObject *u, int base); 9 10 PyAPI_FUNC(int) PyUnstable_Long_IsCompact(const PyLongObject* op); 11 PyAPI_FUNC(Py_ssize_t) PyUnstable_Long_CompactValue(const PyLongObject* op); 12 13 /* PyLong_IsPositive. Check if the integer object is positive. 14 15 - On success, return 1 if *obj is positive, and 0 otherwise. 16 - On failure, set an exception, and return -1. */ 17 PyAPI_FUNC(int) PyLong_IsPositive(PyObject *obj); 18 19 /* PyLong_IsNegative. Check if the integer object is negative. 20 21 - On success, return 1 if *obj is negative, and 0 otherwise. 22 - On failure, set an exception, and return -1. */ 23 PyAPI_FUNC(int) PyLong_IsNegative(PyObject *obj); 24 25 /* PyLong_IsZero. Check if the integer object is zero. 26 27 - On success, return 1 if *obj is zero, and 0 if it is non-zero. 28 - On failure, set an exception, and return -1. */ 29 PyAPI_FUNC(int) PyLong_IsZero(PyObject *obj); 30 31 /* PyLong_GetSign. Get the sign of an integer object: 32 0, -1 or +1 for zero, negative or positive integer, respectively. 33 34 - On success, set '*sign' to the integer sign, and return 0. 35 - On failure, set an exception, and return -1. */ 36 PyAPI_FUNC(int) PyLong_GetSign(PyObject *v, int *sign); 37 38 Py_DEPRECATED(3.14) PyAPI_FUNC(int) _PyLong_Sign(PyObject *v); 39 40 /* _PyLong_NumBits. Return the number of bits needed to represent the 41 absolute value of a long. For example, this returns 1 for 1 and -1, 2 42 for 2 and -2, and 2 for 3 and -3. It returns 0 for 0. 43 v must not be NULL, and must be a normalized long. 44 Always successful. 45 */ 46 PyAPI_FUNC(int64_t) _PyLong_NumBits(PyObject *v); 47 48 /* _PyLong_FromByteArray: View the n unsigned bytes as a binary integer in 49 base 256, and return a Python int with the same numeric value. 50 If n is 0, the integer is 0. Else: 51 If little_endian is 1/true, bytes[n-1] is the MSB and bytes[0] the LSB; 52 else (little_endian is 0/false) bytes[0] is the MSB and bytes[n-1] the 53 LSB. 54 If is_signed is 0/false, view the bytes as a non-negative integer. 55 If is_signed is 1/true, view the bytes as a 2's-complement integer, 56 non-negative if bit 0x80 of the MSB is clear, negative if set. 57 Error returns: 58 + Return NULL with the appropriate exception set if there's not 59 enough memory to create the Python int. 60 */ 61 PyAPI_FUNC(PyObject *) _PyLong_FromByteArray( 62 const unsigned char* bytes, size_t n, 63 int little_endian, int is_signed); 64 65 /* _PyLong_AsByteArray: Convert the least-significant 8*n bits of long 66 v to a base-256 integer, stored in array bytes. Normally return 0, 67 return -1 on error. 68 If little_endian is 1/true, store the MSB at bytes[n-1] and the LSB at 69 bytes[0]; else (little_endian is 0/false) store the MSB at bytes[0] and 70 the LSB at bytes[n-1]. 71 If is_signed is 0/false, it's an error if v < 0; else (v >= 0) n bytes 72 are filled and there's nothing special about bit 0x80 of the MSB. 73 If is_signed is 1/true, bytes is filled with the 2's-complement 74 representation of v's value. Bit 0x80 of the MSB is the sign bit. 75 Error returns (-1): 76 + is_signed is 0 and v < 0. TypeError is set in this case, and bytes 77 isn't altered. 78 + n isn't big enough to hold the full mathematical value of v. For 79 example, if is_signed is 0 and there are more digits in the v than 80 fit in n; or if is_signed is 1, v < 0, and n is just 1 bit shy of 81 being large enough to hold a sign bit. OverflowError is set in this 82 case, but bytes holds the least-significant n bytes of the true value. 83 */ 84 PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v, 85 unsigned char* bytes, size_t n, 86 int little_endian, int is_signed, int with_exceptions); 87 88 /* For use by the gcd function in mathmodule.c */ 89 PyAPI_FUNC(PyObject *) _PyLong_GCD(PyObject *, PyObject *);