2020-10-26 20:00:03 -03:00
|
|
|
#ifndef Py_INTERNAL_LONG_H
|
|
|
|
#define Py_INTERNAL_LONG_H
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef Py_BUILD_CORE
|
|
|
|
# error "this header requires Py_BUILD_CORE define"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "pycore_interp.h" // PyInterpreterState.small_ints
|
|
|
|
#include "pycore_pystate.h" // _PyThreadState_GET()
|
|
|
|
|
|
|
|
// Return a borrowed reference to the zero singleton.
|
|
|
|
// The function cannot return NULL.
|
|
|
|
static inline PyObject* _PyLong_GetZero(void)
|
2021-11-03 13:22:32 -03:00
|
|
|
{ return (PyObject *)&_PyRuntime.small_ints[_PY_NSMALLNEGINTS]; }
|
2020-10-26 20:00:03 -03:00
|
|
|
|
|
|
|
// Return a borrowed reference to the one singleton.
|
|
|
|
// The function cannot return NULL.
|
|
|
|
static inline PyObject* _PyLong_GetOne(void)
|
2021-11-03 13:22:32 -03:00
|
|
|
{ return (PyObject *)&_PyRuntime.small_ints[_PY_NSMALLNEGINTS+1]; }
|
2020-10-26 20:00:03 -03:00
|
|
|
|
2021-08-27 05:21:01 -03:00
|
|
|
PyObject *_PyLong_Add(PyLongObject *left, PyLongObject *right);
|
2021-10-14 11:56:33 -03:00
|
|
|
PyObject *_PyLong_Multiply(PyLongObject *left, PyLongObject *right);
|
2021-11-18 05:19:58 -04:00
|
|
|
PyObject *_PyLong_Subtract(PyLongObject *left, PyLongObject *right);
|
2021-08-27 05:21:01 -03:00
|
|
|
|
2021-10-18 21:04:52 -03:00
|
|
|
/* Used by Python/mystrtoul.c, _PyBytes_FromHex(),
|
|
|
|
_PyBytes_DecodeEscape(), etc. */
|
|
|
|
PyAPI_DATA(unsigned char) _PyLong_DigitValue[256];
|
|
|
|
|
|
|
|
/* Format the object based on the format_spec, as defined in PEP 3101
|
|
|
|
(Advanced String Formatting). */
|
|
|
|
PyAPI_FUNC(int) _PyLong_FormatAdvancedWriter(
|
|
|
|
_PyUnicodeWriter *writer,
|
|
|
|
PyObject *obj,
|
|
|
|
PyObject *format_spec,
|
|
|
|
Py_ssize_t start,
|
|
|
|
Py_ssize_t end);
|
|
|
|
|
|
|
|
PyAPI_FUNC(int) _PyLong_FormatWriter(
|
|
|
|
_PyUnicodeWriter *writer,
|
|
|
|
PyObject *obj,
|
|
|
|
int base,
|
|
|
|
int alternate);
|
|
|
|
|
|
|
|
PyAPI_FUNC(char*) _PyLong_FormatBytesWriter(
|
|
|
|
_PyBytesWriter *writer,
|
|
|
|
char *str,
|
|
|
|
PyObject *obj,
|
|
|
|
int base,
|
|
|
|
int alternate);
|
|
|
|
|
2020-10-26 20:00:03 -03:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif /* !Py_INTERNAL_LONG_H */
|