more PY_LONG_LONG to long long

This commit is contained in:
Benjamin Peterson 2016-09-08 09:15:54 -07:00
parent c71ec8aef3
commit 47ff0734b8
19 changed files with 81 additions and 281 deletions

View File

@ -265,15 +265,12 @@ Numbers
Convert a Python integer to a C :c:type:`unsigned long` without Convert a Python integer to a C :c:type:`unsigned long` without
overflow checking. overflow checking.
``L`` (:class:`int`) [PY_LONG_LONG] ``L`` (:class:`int`) [long long]
Convert a Python integer to a C :c:type:`long long`. This format is only Convert a Python integer to a C :c:type:`long long`.
available on platforms that support :c:type:`long long` (or :c:type:`_int64` on
Windows).
``K`` (:class:`int`) [unsigned PY_LONG_LONG] ``K`` (:class:`int`) [unsigned long long]
Convert a Python integer to a C :c:type:`unsigned long long` Convert a Python integer to a C :c:type:`unsigned long long`
without overflow checking. This format is only available on platforms that without overflow checking.
support :c:type:`unsigned long long` (or :c:type:`unsigned _int64` on Windows).
``n`` (:class:`int`) [Py_ssize_t] ``n`` (:class:`int`) [Py_ssize_t]
Convert a Python integer to a C :c:type:`Py_ssize_t`. Convert a Python integer to a C :c:type:`Py_ssize_t`.
@ -594,15 +591,11 @@ Building values
``k`` (:class:`int`) [unsigned long] ``k`` (:class:`int`) [unsigned long]
Convert a C :c:type:`unsigned long` to a Python integer object. Convert a C :c:type:`unsigned long` to a Python integer object.
``L`` (:class:`int`) [PY_LONG_LONG] ``L`` (:class:`int`) [long long]
Convert a C :c:type:`long long` to a Python integer object. Only available Convert a C :c:type:`long long` to a Python integer object.
on platforms that support :c:type:`long long` (or :c:type:`_int64` on
Windows).
``K`` (:class:`int`) [unsigned PY_LONG_LONG] ``K`` (:class:`int`) [unsigned long long]
Convert a C :c:type:`unsigned long long` to a Python integer object. Only Convert a C :c:type:`unsigned long long` to a Python integer object.
available on platforms that support :c:type:`unsigned long long` (or
:c:type:`unsigned _int64` on Windows).
``n`` (:class:`int`) [Py_ssize_t] ``n`` (:class:`int`) [Py_ssize_t]
Convert a C :c:type:`Py_ssize_t` to a Python integer. Convert a C :c:type:`Py_ssize_t` to a Python integer.

View File

@ -62,13 +62,13 @@ All integers are implemented as "long" integer objects of arbitrary size.
*NULL* on failure. *NULL* on failure.
.. c:function:: PyObject* PyLong_FromLongLong(PY_LONG_LONG v) .. c:function:: PyObject* PyLong_FromLongLong(long long v)
Return a new :c:type:`PyLongObject` object from a C :c:type:`long long`, or *NULL* Return a new :c:type:`PyLongObject` object from a C :c:type:`long long`, or *NULL*
on failure. on failure.
.. c:function:: PyObject* PyLong_FromUnsignedLongLong(unsigned PY_LONG_LONG v) .. c:function:: PyObject* PyLong_FromUnsignedLongLong(unsigned long long v)
Return a new :c:type:`PyLongObject` object from a C :c:type:`unsigned long long`, Return a new :c:type:`PyLongObject` object from a C :c:type:`unsigned long long`,
or *NULL* on failure. or *NULL* on failure.
@ -148,7 +148,7 @@ All integers are implemented as "long" integer objects of arbitrary size.
occurs set *\*overflow* to ``0`` and return ``-1`` as usual. occurs set *\*overflow* to ``0`` and return ``-1`` as usual.
.. c:function:: PY_LONG_LONG PyLong_AsLongLong(PyObject *obj) .. c:function:: long long PyLong_AsLongLong(PyObject *obj)
.. index:: .. index::
single: OverflowError (built-in exception) single: OverflowError (built-in exception)
@ -161,7 +161,7 @@ All integers are implemented as "long" integer objects of arbitrary size.
:c:type:`long`. :c:type:`long`.
.. c:function:: PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow) .. c:function:: long long PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)
Return a C :c:type:`long long` representation of *obj*. If *obj* is not an Return a C :c:type:`long long` representation of *obj*. If *obj* is not an
instance of :c:type:`PyLongObject`, first call its :meth:`__int__` method instance of :c:type:`PyLongObject`, first call its :meth:`__int__` method
@ -210,16 +210,16 @@ All integers are implemented as "long" integer objects of arbitrary size.
:c:type:`size_t`. :c:type:`size_t`.
.. c:function:: unsigned PY_LONG_LONG PyLong_AsUnsignedLongLong(PyObject *pylong) .. c:function:: unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong)
.. index:: .. index::
single: OverflowError (built-in exception) single: OverflowError (built-in exception)
Return a C :c:type:`unsigned PY_LONG_LONG` representation of *pylong*. Return a C :c:type:`unsigned long long` representation of *pylong*. *pylong*
*pylong* must be an instance of :c:type:`PyLongObject`. must be an instance of :c:type:`PyLongObject`.
Raise :exc:`OverflowError` if the value of *pylong* is out of range for an Raise :exc:`OverflowError` if the value of *pylong* is out of range for an
:c:type:`unsigned PY_LONG_LONG`. :c:type:`unsigned long long`.
.. versionchanged:: 3.1 .. versionchanged:: 3.1
A negative *pylong* now raises :exc:`OverflowError`, not :exc:`TypeError`. A negative *pylong* now raises :exc:`OverflowError`, not :exc:`TypeError`.
@ -235,7 +235,7 @@ All integers are implemented as "long" integer objects of arbitrary size.
return the reduction of that value modulo :const:`ULONG_MAX + 1`. return the reduction of that value modulo :const:`ULONG_MAX + 1`.
.. c:function:: unsigned PY_LONG_LONG PyLong_AsUnsignedLongLongMask(PyObject *obj) .. c:function:: unsigned long long PyLong_AsUnsignedLongLongMask(PyObject *obj)
Return a C :c:type:`unsigned long long` representation of *obj*. If *obj* Return a C :c:type:`unsigned long long` representation of *obj*. If *obj*
is not an instance of :c:type:`PyLongObject`, first call its :meth:`__int__` is not an instance of :c:type:`PyLongObject`, first call its :meth:`__int__`

View File

@ -440,7 +440,6 @@ APIs:
.. % because not all compilers support the %z width modifier -- we fake it .. % because not all compilers support the %z width modifier -- we fake it
.. % when necessary via interpolating PY_FORMAT_SIZE_T. .. % when necessary via interpolating PY_FORMAT_SIZE_T.
.. % Similar comments apply to the %ll width modifier and .. % Similar comments apply to the %ll width modifier and
.. % PY_FORMAT_LONG_LONG.
.. tabularcolumns:: |l|l|L| .. tabularcolumns:: |l|l|L|

View File

@ -39,27 +39,10 @@ Used in: Py_SAFE_DOWNCAST
#ifndef PY_LONG_LONG #ifndef PY_LONG_LONG
#define PY_LONG_LONG long long #define PY_LONG_LONG long long
#if defined(LLONG_MAX)
/* If LLONG_MAX is defined in limits.h, use that. */ /* If LLONG_MAX is defined in limits.h, use that. */
#define PY_LLONG_MIN LLONG_MIN #define PY_LLONG_MIN LLONG_MIN
#define PY_LLONG_MAX LLONG_MAX #define PY_LLONG_MAX LLONG_MAX
#define PY_ULLONG_MAX ULLONG_MAX #define PY_ULLONG_MAX ULLONG_MAX
#elif defined(__LONG_LONG_MAX__)
/* Otherwise, if GCC has a builtin define, use that. (Definition of
* PY_LLONG_MIN assumes two's complement with no trap representation.) */
#define PY_LLONG_MAX __LONG_LONG_MAX__
#define PY_LLONG_MIN (-PY_LLONG_MAX - 1)
#define PY_ULLONG_MAX (PY_LLONG_MAX * Py_ULL(2) + 1)
#elif defined(SIZEOF_LONG_LONG)
/* Otherwise compute from SIZEOF_LONG_LONG, assuming two's complement, no
padding bits, and no trap representation. Note: PY_ULLONG_MAX was
previously #defined as (~0ULL) here; but that'll give the wrong value in a
preprocessor expression on systems where long long != intmax_t. */
#define PY_LLONG_MAX \
(1 + 2 * ((Py_LL(1) << (CHAR_BIT * SIZEOF_LONG_LONG - 2)) - 1))
#define PY_LLONG_MIN (-PY_LLONG_MAX - 1)
#define PY_ULLONG_MAX (PY_LLONG_MAX * Py_ULL(2) + 1)
#endif /* LLONG_MAX */
#endif #endif
#define PY_UINT32_T uint32_t #define PY_UINT32_T uint32_t
@ -159,19 +142,6 @@ typedef int Py_ssize_clean_t;
# endif # endif
#endif #endif
/* PY_FORMAT_LONG_LONG is analogous to PY_FORMAT_SIZE_T above, but for
* the long long type instead of the size_t type. The "high level" Python format
* functions listed above will interpret "lld" or "llu" correctly on
* all platforms.
*/
#ifndef PY_FORMAT_LONG_LONG
# ifdef MS_WINDOWS
# define PY_FORMAT_LONG_LONG "I64"
# else
# error "This platform's pyconfig.h needs to define PY_FORMAT_LONG_LONG"
# endif
#endif
/* Py_LOCAL can be used instead of static to get the fastest possible calling /* Py_LOCAL can be used instead of static to get the fastest possible calling
* convention for functions that are local to a given module. * convention for functions that are local to a given module.
* *

View File

@ -5,10 +5,6 @@ from test import support
# Skip this test if the _testcapi module isn't available. # Skip this test if the _testcapi module isn't available.
support.import_module('_testcapi') support.import_module('_testcapi')
from _testcapi import getargs_keywords, getargs_keyword_only from _testcapi import getargs_keywords, getargs_keyword_only
try:
from _testcapi import getargs_L, getargs_K
except ImportError:
getargs_L = None # PY_LONG_LONG not available
# > How about the following counterproposal. This also changes some of # > How about the following counterproposal. This also changes some of
# > the other format codes to be a little more regular. # > the other format codes to be a little more regular.
@ -309,7 +305,6 @@ class Signed_TestCase(unittest.TestCase):
self.assertRaises(OverflowError, getargs_n, VERY_LARGE) self.assertRaises(OverflowError, getargs_n, VERY_LARGE)
@unittest.skipIf(getargs_L is None, 'PY_LONG_LONG is not available')
class LongLong_TestCase(unittest.TestCase): class LongLong_TestCase(unittest.TestCase):
def test_L(self): def test_L(self):
from _testcapi import getargs_L from _testcapi import getargs_L

View File

@ -100,7 +100,7 @@ py_blake2b_new_impl(PyTypeObject *type, PyObject *data, int digest_size,
Py_buffer buf; Py_buffer buf;
unsigned long leaf_size = 0; unsigned long leaf_size = 0;
unsigned PY_LONG_LONG node_offset = 0; unsigned long long node_offset = 0;
self = new_BLAKE2bObject(type); self = new_BLAKE2bObject(type);
if (self == NULL) { if (self == NULL) {
@ -170,7 +170,7 @@ py_blake2b_new_impl(PyTypeObject *type, PyObject *data, int digest_size,
if (node_offset_obj != NULL) { if (node_offset_obj != NULL) {
node_offset = PyLong_AsUnsignedLongLong(node_offset_obj); node_offset = PyLong_AsUnsignedLongLong(node_offset_obj);
if (node_offset == (unsigned PY_LONG_LONG) -1 && PyErr_Occurred()) { if (node_offset == (unsigned long long) -1 && PyErr_Occurred()) {
goto error; goto error;
} }
} }

View File

@ -100,7 +100,7 @@ py_blake2s_new_impl(PyTypeObject *type, PyObject *data, int digest_size,
Py_buffer buf; Py_buffer buf;
unsigned long leaf_size = 0; unsigned long leaf_size = 0;
unsigned PY_LONG_LONG node_offset = 0; unsigned long long node_offset = 0;
self = new_BLAKE2sObject(type); self = new_BLAKE2sObject(type);
if (self == NULL) { if (self == NULL) {
@ -170,7 +170,7 @@ py_blake2s_new_impl(PyTypeObject *type, PyObject *data, int digest_size,
if (node_offset_obj != NULL) { if (node_offset_obj != NULL) {
node_offset = PyLong_AsUnsignedLongLong(node_offset_obj); node_offset = PyLong_AsUnsignedLongLong(node_offset_obj);
if (node_offset == (unsigned PY_LONG_LONG) -1 && PyErr_Occurred()) { if (node_offset == (unsigned long long) -1 && PyErr_Occurred()) {
goto error; goto error;
} }
} }

View File

@ -233,15 +233,15 @@ EXPORT(int) _testfunc_callback_with_pointer(int (*func)(int *))
return (*func)(table); return (*func)(table);
} }
EXPORT(PY_LONG_LONG) _testfunc_q_bhilfdq(signed char b, short h, int i, long l, float f, EXPORT(long long) _testfunc_q_bhilfdq(signed char b, short h, int i, long l, float f,
double d, PY_LONG_LONG q) double d, long long q)
{ {
return (PY_LONG_LONG)(b + h + i + l + f + d + q); return (long long)(b + h + i + l + f + d + q);
} }
EXPORT(PY_LONG_LONG) _testfunc_q_bhilfd(signed char b, short h, int i, long l, float f, double d) EXPORT(long long) _testfunc_q_bhilfd(signed char b, short h, int i, long l, float f, double d)
{ {
return (PY_LONG_LONG)(b + h + i + l + f + d); return (long long)(b + h + i + l + f + d);
} }
EXPORT(int) _testfunc_callback_i_if(int value, int (*func)(int)) EXPORT(int) _testfunc_callback_i_if(int value, int (*func)(int))
@ -254,10 +254,10 @@ EXPORT(int) _testfunc_callback_i_if(int value, int (*func)(int))
return sum; return sum;
} }
EXPORT(PY_LONG_LONG) _testfunc_callback_q_qf(PY_LONG_LONG value, EXPORT(long long) _testfunc_callback_q_qf(long long value,
PY_LONG_LONG (*func)(PY_LONG_LONG)) long long (*func)(long long))
{ {
PY_LONG_LONG sum = 0; long long sum = 0;
while (value != 0) { while (value != 0) {
sum += func(value); sum += func(value);
@ -381,8 +381,8 @@ EXPORT(void) _py_func(void)
{ {
} }
EXPORT(PY_LONG_LONG) last_tf_arg_s; EXPORT(long long) last_tf_arg_s;
EXPORT(unsigned PY_LONG_LONG) last_tf_arg_u; EXPORT(unsigned long long) last_tf_arg_u;
struct BITS { struct BITS {
int A: 1, B:2, C:3, D:4, E: 5, F: 6, G: 7, H: 8, I: 9; int A: 1, B:2, C:3, D:4, E: 5, F: 6, G: 7, H: 8, I: 9;
@ -445,8 +445,8 @@ static PyMethodDef module_methods[] = {
{ NULL, NULL, 0, NULL}, { NULL, NULL, 0, NULL},
}; };
#define S last_tf_arg_s = (PY_LONG_LONG)c #define S last_tf_arg_s = (long long)c
#define U last_tf_arg_u = (unsigned PY_LONG_LONG)c #define U last_tf_arg_u = (unsigned long long)c
EXPORT(signed char) tf_b(signed char c) { S; return c/3; } EXPORT(signed char) tf_b(signed char c) { S; return c/3; }
EXPORT(unsigned char) tf_B(unsigned char c) { U; return c/3; } EXPORT(unsigned char) tf_B(unsigned char c) { U; return c/3; }
@ -456,8 +456,8 @@ EXPORT(int) tf_i(int c) { S; return c/3; }
EXPORT(unsigned int) tf_I(unsigned int c) { U; return c/3; } EXPORT(unsigned int) tf_I(unsigned int c) { U; return c/3; }
EXPORT(long) tf_l(long c) { S; return c/3; } EXPORT(long) tf_l(long c) { S; return c/3; }
EXPORT(unsigned long) tf_L(unsigned long c) { U; return c/3; } EXPORT(unsigned long) tf_L(unsigned long c) { U; return c/3; }
EXPORT(PY_LONG_LONG) tf_q(PY_LONG_LONG c) { S; return c/3; } EXPORT(long long) tf_q(long long c) { S; return c/3; }
EXPORT(unsigned PY_LONG_LONG) tf_Q(unsigned PY_LONG_LONG c) { U; return c/3; } EXPORT(unsigned long long) tf_Q(unsigned long long c) { U; return c/3; }
EXPORT(float) tf_f(float c) { S; return c/3; } EXPORT(float) tf_f(float c) { S; return c/3; }
EXPORT(double) tf_d(double c) { S; return c/3; } EXPORT(double) tf_d(double c) { S; return c/3; }
EXPORT(long double) tf_D(long double c) { S; return c/3; } EXPORT(long double) tf_D(long double c) { S; return c/3; }
@ -471,8 +471,8 @@ EXPORT(int) __stdcall s_tf_i(int c) { S; return c/3; }
EXPORT(unsigned int) __stdcall s_tf_I(unsigned int c) { U; return c/3; } EXPORT(unsigned int) __stdcall s_tf_I(unsigned int c) { U; return c/3; }
EXPORT(long) __stdcall s_tf_l(long c) { S; return c/3; } EXPORT(long) __stdcall s_tf_l(long c) { S; return c/3; }
EXPORT(unsigned long) __stdcall s_tf_L(unsigned long c) { U; return c/3; } EXPORT(unsigned long) __stdcall s_tf_L(unsigned long c) { U; return c/3; }
EXPORT(PY_LONG_LONG) __stdcall s_tf_q(PY_LONG_LONG c) { S; return c/3; } EXPORT(long long) __stdcall s_tf_q(long long c) { S; return c/3; }
EXPORT(unsigned PY_LONG_LONG) __stdcall s_tf_Q(unsigned PY_LONG_LONG c) { U; return c/3; } EXPORT(unsigned long long) __stdcall s_tf_Q(unsigned long long c) { U; return c/3; }
EXPORT(float) __stdcall s_tf_f(float c) { S; return c/3; } EXPORT(float) __stdcall s_tf_f(float c) { S; return c/3; }
EXPORT(double) __stdcall s_tf_d(double c) { S; return c/3; } EXPORT(double) __stdcall s_tf_d(double c) { S; return c/3; }
EXPORT(long double) __stdcall s_tf_D(long double c) { S; return c/3; } EXPORT(long double) __stdcall s_tf_D(long double c) { S; return c/3; }
@ -487,8 +487,8 @@ EXPORT(int) tf_bi(signed char x, int c) { S; return c/3; }
EXPORT(unsigned int) tf_bI(signed char x, unsigned int c) { U; return c/3; } EXPORT(unsigned int) tf_bI(signed char x, unsigned int c) { U; return c/3; }
EXPORT(long) tf_bl(signed char x, long c) { S; return c/3; } EXPORT(long) tf_bl(signed char x, long c) { S; return c/3; }
EXPORT(unsigned long) tf_bL(signed char x, unsigned long c) { U; return c/3; } EXPORT(unsigned long) tf_bL(signed char x, unsigned long c) { U; return c/3; }
EXPORT(PY_LONG_LONG) tf_bq(signed char x, PY_LONG_LONG c) { S; return c/3; } EXPORT(long long) tf_bq(signed char x, long long c) { S; return c/3; }
EXPORT(unsigned PY_LONG_LONG) tf_bQ(signed char x, unsigned PY_LONG_LONG c) { U; return c/3; } EXPORT(unsigned long long) tf_bQ(signed char x, unsigned long long c) { U; return c/3; }
EXPORT(float) tf_bf(signed char x, float c) { S; return c/3; } EXPORT(float) tf_bf(signed char x, float c) { S; return c/3; }
EXPORT(double) tf_bd(signed char x, double c) { S; return c/3; } EXPORT(double) tf_bd(signed char x, double c) { S; return c/3; }
EXPORT(long double) tf_bD(signed char x, long double c) { S; return c/3; } EXPORT(long double) tf_bD(signed char x, long double c) { S; return c/3; }
@ -503,8 +503,8 @@ EXPORT(int) __stdcall s_tf_bi(signed char x, int c) { S; return c/3; }
EXPORT(unsigned int) __stdcall s_tf_bI(signed char x, unsigned int c) { U; return c/3; } EXPORT(unsigned int) __stdcall s_tf_bI(signed char x, unsigned int c) { U; return c/3; }
EXPORT(long) __stdcall s_tf_bl(signed char x, long c) { S; return c/3; } EXPORT(long) __stdcall s_tf_bl(signed char x, long c) { S; return c/3; }
EXPORT(unsigned long) __stdcall s_tf_bL(signed char x, unsigned long c) { U; return c/3; } EXPORT(unsigned long) __stdcall s_tf_bL(signed char x, unsigned long c) { U; return c/3; }
EXPORT(PY_LONG_LONG) __stdcall s_tf_bq(signed char x, PY_LONG_LONG c) { S; return c/3; } EXPORT(long long) __stdcall s_tf_bq(signed char x, long long c) { S; return c/3; }
EXPORT(unsigned PY_LONG_LONG) __stdcall s_tf_bQ(signed char x, unsigned PY_LONG_LONG c) { U; return c/3; } EXPORT(unsigned long long) __stdcall s_tf_bQ(signed char x, unsigned long long c) { U; return c/3; }
EXPORT(float) __stdcall s_tf_bf(signed char x, float c) { S; return c/3; } EXPORT(float) __stdcall s_tf_bf(signed char x, float c) { S; return c/3; }
EXPORT(double) __stdcall s_tf_bd(signed char x, double c) { S; return c/3; } EXPORT(double) __stdcall s_tf_bd(signed char x, double c) { S; return c/3; }
EXPORT(long double) __stdcall s_tf_bD(signed char x, long double c) { S; return c/3; } EXPORT(long double) __stdcall s_tf_bD(signed char x, long double c) { S; return c/3; }

View File

@ -591,7 +591,7 @@ union result {
short h; short h;
int i; int i;
long l; long l;
PY_LONG_LONG q; long long q;
long double D; long double D;
double d; double d;
float f; float f;

View File

@ -382,9 +382,9 @@ get_ulong(PyObject *v, unsigned long *p)
/* Same, but handling native long long. */ /* Same, but handling native long long. */
static int static int
get_longlong(PyObject *v, PY_LONG_LONG *p) get_longlong(PyObject *v, long long *p)
{ {
PY_LONG_LONG x; long long x;
if (PyFloat_Check(v)) { if (PyFloat_Check(v)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"int expected instead of float"); "int expected instead of float");
@ -400,16 +400,16 @@ get_longlong(PyObject *v, PY_LONG_LONG *p)
/* Same, but handling native unsigned long long. */ /* Same, but handling native unsigned long long. */
static int static int
get_ulonglong(PyObject *v, unsigned PY_LONG_LONG *p) get_ulonglong(PyObject *v, unsigned long long *p)
{ {
unsigned PY_LONG_LONG x; unsigned long long x;
if (PyFloat_Check(v)) { if (PyFloat_Check(v)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"int expected instead of float"); "int expected instead of float");
return -1; return -1;
} }
x = PyLong_AsUnsignedLongLongMask(v); x = PyLong_AsUnsignedLongLongMask(v);
if (x == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred()) if (x == (unsigned long long)-1 && PyErr_Occurred())
return -1; return -1;
*p = x; *p = x;
return 0; return 0;
@ -879,12 +879,12 @@ L_get_sw(void *ptr, Py_ssize_t size)
static PyObject * static PyObject *
q_set(void *ptr, PyObject *value, Py_ssize_t size) q_set(void *ptr, PyObject *value, Py_ssize_t size)
{ {
PY_LONG_LONG val; long long val;
PY_LONG_LONG x; long long x;
if (get_longlong(value, &val) < 0) if (get_longlong(value, &val) < 0)
return NULL; return NULL;
memcpy(&x, ptr, sizeof(x)); memcpy(&x, ptr, sizeof(x));
x = SET(PY_LONG_LONG, x, val, size); x = SET(long long, x, val, size);
memcpy(ptr, &x, sizeof(x)); memcpy(ptr, &x, sizeof(x));
_RET(value); _RET(value);
} }
@ -892,13 +892,13 @@ q_set(void *ptr, PyObject *value, Py_ssize_t size)
static PyObject * static PyObject *
q_set_sw(void *ptr, PyObject *value, Py_ssize_t size) q_set_sw(void *ptr, PyObject *value, Py_ssize_t size)
{ {
PY_LONG_LONG val; long long val;
PY_LONG_LONG field; long long field;
if (get_longlong(value, &val) < 0) if (get_longlong(value, &val) < 0)
return NULL; return NULL;
memcpy(&field, ptr, sizeof(field)); memcpy(&field, ptr, sizeof(field));
field = SWAP_8(field); field = SWAP_8(field);
field = SET(PY_LONG_LONG, field, val, size); field = SET(long long, field, val, size);
field = SWAP_8(field); field = SWAP_8(field);
memcpy(ptr, &field, sizeof(field)); memcpy(ptr, &field, sizeof(field));
_RET(value); _RET(value);
@ -907,7 +907,7 @@ q_set_sw(void *ptr, PyObject *value, Py_ssize_t size)
static PyObject * static PyObject *
q_get(void *ptr, Py_ssize_t size) q_get(void *ptr, Py_ssize_t size)
{ {
PY_LONG_LONG val; long long val;
memcpy(&val, ptr, sizeof(val)); memcpy(&val, ptr, sizeof(val));
GET_BITFIELD(val, size); GET_BITFIELD(val, size);
return PyLong_FromLongLong(val); return PyLong_FromLongLong(val);
@ -916,7 +916,7 @@ q_get(void *ptr, Py_ssize_t size)
static PyObject * static PyObject *
q_get_sw(void *ptr, Py_ssize_t size) q_get_sw(void *ptr, Py_ssize_t size)
{ {
PY_LONG_LONG val; long long val;
memcpy(&val, ptr, sizeof(val)); memcpy(&val, ptr, sizeof(val));
val = SWAP_8(val); val = SWAP_8(val);
GET_BITFIELD(val, size); GET_BITFIELD(val, size);
@ -926,12 +926,12 @@ q_get_sw(void *ptr, Py_ssize_t size)
static PyObject * static PyObject *
Q_set(void *ptr, PyObject *value, Py_ssize_t size) Q_set(void *ptr, PyObject *value, Py_ssize_t size)
{ {
unsigned PY_LONG_LONG val; unsigned long long val;
unsigned PY_LONG_LONG x; unsigned long long x;
if (get_ulonglong(value, &val) < 0) if (get_ulonglong(value, &val) < 0)
return NULL; return NULL;
memcpy(&x, ptr, sizeof(x)); memcpy(&x, ptr, sizeof(x));
x = SET(PY_LONG_LONG, x, val, size); x = SET(long long, x, val, size);
memcpy(ptr, &x, sizeof(x)); memcpy(ptr, &x, sizeof(x));
_RET(value); _RET(value);
} }
@ -939,13 +939,13 @@ Q_set(void *ptr, PyObject *value, Py_ssize_t size)
static PyObject * static PyObject *
Q_set_sw(void *ptr, PyObject *value, Py_ssize_t size) Q_set_sw(void *ptr, PyObject *value, Py_ssize_t size)
{ {
unsigned PY_LONG_LONG val; unsigned long long val;
unsigned PY_LONG_LONG field; unsigned long long field;
if (get_ulonglong(value, &val) < 0) if (get_ulonglong(value, &val) < 0)
return NULL; return NULL;
memcpy(&field, ptr, sizeof(field)); memcpy(&field, ptr, sizeof(field));
field = SWAP_8(field); field = SWAP_8(field);
field = SET(unsigned PY_LONG_LONG, field, val, size); field = SET(unsigned long long, field, val, size);
field = SWAP_8(field); field = SWAP_8(field);
memcpy(ptr, &field, sizeof(field)); memcpy(ptr, &field, sizeof(field));
_RET(value); _RET(value);
@ -954,7 +954,7 @@ Q_set_sw(void *ptr, PyObject *value, Py_ssize_t size)
static PyObject * static PyObject *
Q_get(void *ptr, Py_ssize_t size) Q_get(void *ptr, Py_ssize_t size)
{ {
unsigned PY_LONG_LONG val; unsigned long long val;
memcpy(&val, ptr, sizeof(val)); memcpy(&val, ptr, sizeof(val));
GET_BITFIELD(val, size); GET_BITFIELD(val, size);
return PyLong_FromUnsignedLongLong(val); return PyLong_FromUnsignedLongLong(val);
@ -963,7 +963,7 @@ Q_get(void *ptr, Py_ssize_t size)
static PyObject * static PyObject *
Q_get_sw(void *ptr, Py_ssize_t size) Q_get_sw(void *ptr, Py_ssize_t size)
{ {
unsigned PY_LONG_LONG val; unsigned long long val;
memcpy(&val, ptr, sizeof(val)); memcpy(&val, ptr, sizeof(val));
val = SWAP_8(val); val = SWAP_8(val);
GET_BITFIELD(val, size); GET_BITFIELD(val, size);
@ -1477,7 +1477,7 @@ P_set(void *ptr, PyObject *value, Py_ssize_t size)
v = (void *)PyLong_AsUnsignedLongMask(value); v = (void *)PyLong_AsUnsignedLongMask(value);
#else #else
#if SIZEOF_LONG_LONG < SIZEOF_VOID_P #if SIZEOF_LONG_LONG < SIZEOF_VOID_P
# error "PyLong_AsVoidPtr: sizeof(PY_LONG_LONG) < sizeof(void*)" # error "PyLong_AsVoidPtr: sizeof(long long) < sizeof(void*)"
#endif #endif
v = (void *)PyLong_AsUnsignedLongLongMask(value); v = (void *)PyLong_AsUnsignedLongLongMask(value);
#endif #endif
@ -1617,8 +1617,8 @@ typedef struct { char c; wchar_t *x; } s_wchar_p;
#endif #endif
*/ */
typedef struct { char c; PY_LONG_LONG x; } s_long_long; typedef struct { char c; long long x; } s_long_long;
#define LONG_LONG_ALIGN (sizeof(s_long_long) - sizeof(PY_LONG_LONG)) #define LONG_LONG_ALIGN (sizeof(s_long_long) - sizeof(long long))
/* from ffi.h: /* from ffi.h:
typedef struct _ffi_type typedef struct _ffi_type

View File

@ -301,7 +301,7 @@ struct tagPyCArgObject {
short h; short h;
int i; int i;
long l; long l;
PY_LONG_LONG q; long long q;
long double D; long double D;
double d; double d;
float f; float f;

View File

@ -85,12 +85,12 @@ extern int _PyIO_trap_eintr(void);
#ifdef MS_WINDOWS #ifdef MS_WINDOWS
/* Windows uses long long for offsets */ /* Windows uses long long for offsets */
typedef PY_LONG_LONG Py_off_t; typedef long long Py_off_t;
# define PyLong_AsOff_t PyLong_AsLongLong # define PyLong_AsOff_t PyLong_AsLongLong
# define PyLong_FromOff_t PyLong_FromLongLong # define PyLong_FromOff_t PyLong_FromLongLong
# define PY_OFF_T_MAX PY_LLONG_MAX # define PY_OFF_T_MAX LLONG_MAX
# define PY_OFF_T_MIN PY_LLONG_MIN # define PY_OFF_T_MIN LLONG_MIN
# define PY_OFF_T_COMPAT PY_LONG_LONG /* type compatible with off_t */ # define PY_OFF_T_COMPAT long long /* type compatible with off_t */
# define PY_PRIdOFF "lld" /* format to use for that type */ # define PY_PRIdOFF "lld" /* format to use for that type */
#else #else
@ -107,9 +107,9 @@ typedef off_t Py_off_t;
#elif (SIZEOF_OFF_T == SIZEOF_LONG_LONG) #elif (SIZEOF_OFF_T == SIZEOF_LONG_LONG)
# define PyLong_AsOff_t PyLong_AsLongLong # define PyLong_AsOff_t PyLong_AsLongLong
# define PyLong_FromOff_t PyLong_FromLongLong # define PyLong_FromOff_t PyLong_FromLongLong
# define PY_OFF_T_MAX PY_LLONG_MAX # define PY_OFF_T_MAX LLONG_MAX
# define PY_OFF_T_MIN PY_LLONG_MIN # define PY_OFF_T_MIN LLONG_MIN
# define PY_OFF_T_COMPAT PY_LONG_LONG # define PY_OFF_T_COMPAT long long
# define PY_PRIdOFF "lld" # define PY_PRIdOFF "lld"
#elif (SIZEOF_OFF_T == SIZEOF_LONG) #elif (SIZEOF_OFF_T == SIZEOF_LONG)
# define PyLong_AsOff_t PyLong_AsLong # define PyLong_AsOff_t PyLong_AsLong

View File

@ -531,7 +531,7 @@ _io_IncrementalNewlineDecoder_getstate_impl(nldecoder_object *self)
/*[clinic end generated code: output=f0d2c9c136f4e0d0 input=f8ff101825e32e7f]*/ /*[clinic end generated code: output=f0d2c9c136f4e0d0 input=f8ff101825e32e7f]*/
{ {
PyObject *buffer; PyObject *buffer;
unsigned PY_LONG_LONG flag; unsigned long long flag;
if (self->decoder != Py_None) { if (self->decoder != Py_None) {
PyObject *state = PyObject_CallMethodObjArgs(self->decoder, PyObject *state = PyObject_CallMethodObjArgs(self->decoder,
@ -567,7 +567,7 @@ _io_IncrementalNewlineDecoder_setstate(nldecoder_object *self,
/*[clinic end generated code: output=c10c622508b576cb input=c53fb505a76dbbe2]*/ /*[clinic end generated code: output=c10c622508b576cb input=c53fb505a76dbbe2]*/
{ {
PyObject *buffer; PyObject *buffer;
unsigned PY_LONG_LONG flag; unsigned long long flag;
if (!PyArg_ParseTuple(state, "OK", &buffer, &flag)) if (!PyArg_ParseTuple(state, "OK", &buffer, &flag))
return NULL; return NULL;

View File

@ -130,7 +130,7 @@ sqlite_int64
_pysqlite_long_as_int64(PyObject * py_val) _pysqlite_long_as_int64(PyObject * py_val)
{ {
int overflow; int overflow;
PY_LONG_LONG value = PyLong_AsLongLongAndOverflow(py_val, &overflow); long long value = PyLong_AsLongLongAndOverflow(py_val, &overflow);
if (value == -1 && PyErr_Occurred()) if (value == -1 && PyErr_Occurred())
return -1; return -1;
if (!overflow) { if (!overflow) {

View File

@ -2680,7 +2680,7 @@ unicode_fromformat_arg(_PyUnicodeWriter *writer,
len = sprintf(buffer, "%lu", len = sprintf(buffer, "%lu",
va_arg(*vargs, unsigned long)); va_arg(*vargs, unsigned long));
else if (longlongflag) else if (longlongflag)
len = sprintf(buffer, "%" PY_FORMAT_LONG_LONG "u", len = sprintf(buffer, "%llu",
va_arg(*vargs, unsigned long long)); va_arg(*vargs, unsigned long long));
else if (size_tflag) else if (size_tflag)
len = sprintf(buffer, "%" PY_FORMAT_SIZE_T "u", len = sprintf(buffer, "%" PY_FORMAT_SIZE_T "u",
@ -2697,7 +2697,7 @@ unicode_fromformat_arg(_PyUnicodeWriter *writer,
len = sprintf(buffer, "%li", len = sprintf(buffer, "%li",
va_arg(*vargs, long)); va_arg(*vargs, long));
else if (longlongflag) else if (longlongflag)
len = sprintf(buffer, "%" PY_FORMAT_LONG_LONG "i", len = sprintf(buffer, "%lli",
va_arg(*vargs, long long)); va_arg(*vargs, long long));
else if (size_tflag) else if (size_tflag)
len = sprintf(buffer, "%" PY_FORMAT_SIZE_T "i", len = sprintf(buffer, "%" PY_FORMAT_SIZE_T "i",

4
aclocal.m4 vendored
View File

@ -13,7 +13,7 @@
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
dnl serial 11 (pkg-config-0.29) dnl serial 11 (pkg-config-0.29.1)
dnl dnl
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>. dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com> dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
@ -55,7 +55,7 @@ dnl
dnl See the "Since" comment for each macro you use to see what version dnl See the "Since" comment for each macro you use to see what version
dnl of the macros you require. dnl of the macros you require.
m4_defun([PKG_PREREQ], m4_defun([PKG_PREREQ],
[m4_define([PKG_MACROS_VERSION], [0.29]) [m4_define([PKG_MACROS_VERSION], [0.29.1])
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
])dnl PKG_PREREQ ])dnl PKG_PREREQ

93
configure vendored
View File

@ -15729,99 +15729,6 @@ $as_echo "#define HAVE_DEV_PTC 1" >>confdefs.h
fi fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for %lld and %llu printf() format support" >&5
$as_echo_n "checking for %lld and %llu printf() format support... " >&6; }
if ${ac_cv_have_long_long_format+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
ac_cv_have_long_long_format="cross -- assuming no"
if test x$GCC = xyes; then
save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -Werror -Wformat"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
#include <stddef.h>
int
main ()
{
char *buffer;
sprintf(buffer, "%lld", (long long)123);
sprintf(buffer, "%lld", (long long)-123);
sprintf(buffer, "%llu", (unsigned long long)123);
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_have_long_long_format=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS=$save_CFLAGS
fi
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
int main()
{
char buffer[256];
if (sprintf(buffer, "%lld", (long long)123) < 0)
return 1;
if (strcmp(buffer, "123"))
return 1;
if (sprintf(buffer, "%lld", (long long)-123) < 0)
return 1;
if (strcmp(buffer, "-123"))
return 1;
if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
return 1;
if (strcmp(buffer, "123"))
return 1;
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
ac_cv_have_long_long_format=yes
else
ac_cv_have_long_long_format=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_long_long_format" >&5
$as_echo "$ac_cv_have_long_long_format" >&6; }
if test "$ac_cv_have_long_long_format" = yes
then
$as_echo "#define PY_FORMAT_LONG_LONG \"ll\"" >>confdefs.h
fi
if test $ac_sys_system = Darwin if test $ac_sys_system = Darwin
then then
LIBS="$LIBS -framework CoreFoundation" LIBS="$LIBS -framework CoreFoundation"

View File

@ -4938,67 +4938,6 @@ if test "x$ac_cv_file__dev_ptc" = xyes; then
[Define to 1 if you have the /dev/ptc device file.]) [Define to 1 if you have the /dev/ptc device file.])
fi fi
AC_MSG_CHECKING(for %lld and %llu printf() format support)
AC_CACHE_VAL(ac_cv_have_long_long_format,
AC_RUN_IFELSE([AC_LANG_SOURCE([[[
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
int main()
{
char buffer[256];
if (sprintf(buffer, "%lld", (long long)123) < 0)
return 1;
if (strcmp(buffer, "123"))
return 1;
if (sprintf(buffer, "%lld", (long long)-123) < 0)
return 1;
if (strcmp(buffer, "-123"))
return 1;
if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
return 1;
if (strcmp(buffer, "123"))
return 1;
return 0;
}
]]])],
[ac_cv_have_long_long_format=yes],
[ac_cv_have_long_long_format=no],
[ac_cv_have_long_long_format="cross -- assuming no"
if test x$GCC = xyes; then
save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -Werror -Wformat"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <stdio.h>
#include <stddef.h>
]], [[
char *buffer;
sprintf(buffer, "%lld", (long long)123);
sprintf(buffer, "%lld", (long long)-123);
sprintf(buffer, "%llu", (unsigned long long)123);
]])],
ac_cv_have_long_long_format=yes
)
CFLAGS=$save_CFLAGS
fi])
)
AC_MSG_RESULT($ac_cv_have_long_long_format)
if test "$ac_cv_have_long_long_format" = yes
then
AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
[Define to printf format modifier for long long type])
fi
if test $ac_sys_system = Darwin if test $ac_sys_system = Darwin
then then
LIBS="$LIBS -framework CoreFoundation" LIBS="$LIBS -framework CoreFoundation"

View File

@ -1241,9 +1241,6 @@
/* Define as the preferred size in bits of long digits */ /* Define as the preferred size in bits of long digits */
#undef PYLONG_BITS_IN_DIGIT #undef PYLONG_BITS_IN_DIGIT
/* Define to printf format modifier for long long type */
#undef PY_FORMAT_LONG_LONG
/* Define to printf format modifier for Py_ssize_t */ /* Define to printf format modifier for Py_ssize_t */
#undef PY_FORMAT_SIZE_T #undef PY_FORMAT_SIZE_T