Simplify some convolution by simply not recognizing 'q' and 'Q' at all
in native mode on platforms that don't HAVE_LONG_LONG.
This commit is contained in:
parent
be80085514
commit
3023f78819
|
@ -72,11 +72,6 @@ typedef struct { char c; void *x; } s_void_p;
|
||||||
#ifdef HAVE_LONG_LONG
|
#ifdef HAVE_LONG_LONG
|
||||||
typedef struct { char c; 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(LONG_LONG))
|
#define LONG_LONG_ALIGN (sizeof(s_long_long) - sizeof(LONG_LONG))
|
||||||
|
|
||||||
#else
|
|
||||||
static char qQ_error_msg[] =
|
|
||||||
"q and Q unavailable in native mode on this platform; use a standard mode.\0";
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define STRINGIFY(x) #x
|
#define STRINGIFY(x) #x
|
||||||
|
@ -578,16 +573,6 @@ nu_ulonglong(const char *p, const formatdef *f)
|
||||||
{
|
{
|
||||||
return PyLong_FromUnsignedLongLong(*(unsigned LONG_LONG *)p);
|
return PyLong_FromUnsignedLongLong(*(unsigned LONG_LONG *)p);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
nu_qQerror(const char *p, const formatdef *f)
|
|
||||||
{
|
|
||||||
PyErr_SetString(StructError, qQ_error_msg);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
@ -746,16 +731,6 @@ np_ulonglong(char *p, PyObject *v, const formatdef *f)
|
||||||
* (unsigned LONG_LONG *)p = x;
|
* (unsigned LONG_LONG *)p = x;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
static int
|
|
||||||
np_qQerror(char *p, PyObject *v, const formatdef *f)
|
|
||||||
{
|
|
||||||
PyErr_SetString(StructError, qQ_error_msg);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -818,14 +793,6 @@ static formatdef native_table[] = {
|
||||||
#ifdef HAVE_LONG_LONG
|
#ifdef HAVE_LONG_LONG
|
||||||
{'q', sizeof(LONG_LONG), LONG_LONG_ALIGN, nu_longlong, np_longlong},
|
{'q', sizeof(LONG_LONG), LONG_LONG_ALIGN, nu_longlong, np_longlong},
|
||||||
{'Q', sizeof(LONG_LONG), LONG_LONG_ALIGN, nu_ulonglong,np_ulonglong},
|
{'Q', sizeof(LONG_LONG), LONG_LONG_ALIGN, nu_ulonglong,np_ulonglong},
|
||||||
#else
|
|
||||||
/* n[pu]_qQerror just raise errors, but give them "the expected" size
|
|
||||||
and alignment anyway so that calcsize returns something reasonable,
|
|
||||||
and so unpack code that works on a 'long long' platform ends up in
|
|
||||||
the error routine instead of with a mysterious "unpack str size
|
|
||||||
does not match format" msg when run on a non-'long long' box. */
|
|
||||||
{'q', 8, 8, nu_qQerror, np_qQerror},
|
|
||||||
{'Q', 8, 8, nu_qQerror, np_qQerror},
|
|
||||||
#endif
|
#endif
|
||||||
{0}
|
{0}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue