[Python-Dev] Py_ssize_t output parameters (Was: [Python-checkins] r41971 ...)
"Martin v. Löwis"
martin at v.loewis.de
Thu Jan 12 23:36:01 CET 2006
M.-A. Lemburg wrote:
> What if x64 has a 64-bit value ? How do you catch
> and process the truncation error ?
We were *both* discussing a scenario where no sizes
exceed 2**31, right?
Under such a scenario, this just won't happen.
OTOH, if you were discussing a scenario where sizes
might exceed 2**31, then I don't see why you are worried
about Py_ssize_t* parameters alone: Even
PyString_Size()
might (of course!) return a value > 2**31 - so it
is not just output parameters, but also return values.
For more information, please read "Conversion guidelines"
in
http://www.python.org/peps/pep-0353.html
>>That is not necessary. Can you give in example of a module
>>where you think it is necessary?
>
>
> If you want to port the extension to Py_ssize_t, this
> is essentially the case.
>
> You might want to take the unicodeobject.c file as
> example.
unicodeobject.c is not an extension. We were discussing
existing extension modules.
> We could use the type flags for these. much like we
> do for the new style numbers.
Would you like to write a specification for that?
> If you don't like the macro approach, why not simply
> leave the two separate sets of APIs visible.
To simplify the porting.
> All Py_ssize_t aware and compatible extensions
> would use the new APIs instead. The old-style APIs
> should then take care of the proper down-casting and
> error reporting.
That is not possible. Some API does not support
error reporting (like PyString_Size()). So callers
don't expect it to fail.
Regards,
Martin
More information about the Python-Dev
mailing list