Skip to content

Conversation

@vstinner
Copy link
Member

  • Add new conversions functions for PyLong:

    • PyLong_FromIntMax()
    • PyLong_FromUIntMax()
    • PyLong_AsIntMax()
    • PyLong_AsIntMaxAndOverflow()
    • PyLong_AsUIntMax()
  • getargs: add 'm' format

  • New _testcapi constants: INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX, SIZEOF_INTMAX_T

  • Add _testcapi.getargs_m() and _testcapi.test_long_intmax_api()

  • PyLong_FromVoidPtr() uses PyLong_FromUIntMax()

  • Use intmax_t in various modules

array, struct, ctypes and memoryview are not modified yet to support
intmax_t.

* Add new conversions functions for PyLong: - PyLong_FromIntMax() - PyLong_FromUIntMax() - PyLong_AsIntMax() - PyLong_AsIntMaxAndOverflow() - PyLong_AsUIntMax() * getargs: add 'm' format * New _testcapi constants: INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX, SIZEOF_INTMAX_T * Add _testcapi.getargs_m() and _testcapi.test_long_intmax_api() * PyLong_FromVoidPtr() uses PyLong_FromUIntMax() * Use intmax_t in various modules array, struct, ctypes and memoryview are not modified yet to support intmax_t.
Convert a Python integer to a C :c:type:`Py_ssize_t`.

``m`` (:class:`int`) [intmax_t]
Convert a Python integer to a C :c:type:`intmax_t`.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about uintmax_t?

would not work correctly on platforms with 32-bit longs. */
staticint
module_add_int_constant(PyObject*m, constchar*name, long longvalue)
module_add_int_constant(PyObject*m, constchar*name, intmax_tvalue)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sure 64 bit is enough for all LZMA constants.

if (self->file_handle!=INVALID_HANDLE_VALUE){
DWORDlow,high;
long longsize;
intmax_tsize;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

size is a 64-bit number. long long is enough.

if (Tcl_GetWideIntFromObj(Tkapp_Interp(tkapp), value, &wideValue) ==TCL_OK){
if (sizeof(wideValue) <= SIZEOF_LONG_LONG)
returnPyLong_FromLongLong(wideValue);
if (sizeof(wideValue) <= SIZEOF_INTMAX_T){

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this condition is always true. I think that it is always true even for long long. I added this check only because the support of long long was optional.

self->got_file_index=1;
}
Py_BUILD_ASSERT(sizeof(unsigned long long) >= sizeof(self->win32_file_index));
returnPyLong_FromUnsignedLongLong(self->win32_file_index);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't be used PyLong_FromUIntMax?

#else
returnPyLong_FromLong((long)self->d_ino);
#endif
returnPyLong_FromUIntMax((long)self->d_ino);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(long)?

Can d_ino be negative?

@brettcannonbrettcannon added the type-feature A feature request or enhancement label Mar 28, 2017
@vstinner
Copy link
MemberAuthor

Rejected for the reasons explained in the bpo: http://bugs.python.org/issue17870

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type-featureA feature request or enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@vstinner@serhiy-storchaka@brettcannon@the-knights-who-say-ni