[C++-sig] Re: Can't convert to unsigned int
David Abrahams
dave at boost-consulting.com
Wed Dec 11 22:47:24 CET 2002
"Mike Rovner" <mike at bindkey.com> writes:
> "David Abrahams" <dave at boost-consulting.com> wrote in message
> news:uy96wwimc.fsf at boost-consulting.com...
>
>> Well, that's an interesting question. A C++ unsigned long actually
>> has values that can't be represented as a Python INT. Should
>> Boost.Python use Python LONGs to represent these?
> ...
>> This very issue has caused a lot of contention on Python-dev. I'm
>> honestly unsure of what the best approach is, and would value a
>> discussion.
>
> 2.3+ is going to treat numbers outside int diapason as long.
^^^^^^^^
What a beautiful word to apply for numeric ranges!
> So should BPL IMHO.
Believe it or not, those guys on python-dev know what's happening for
2.3+ ;-)
Int/Long unification (meaning, having a single type for both) is
slated to happen "sometime in the future", IIRC.
By 2.2.1, we already had:
>>> 32768*65536
2147483648L
...so it's not clear to me what your statement meant. Certainly
PyInt_FromLong() is still going to take a signed long int parameter,
which will not represent numbers as great as the your constant on a
32-bit platform.
The real question is, how do we represent an unsigned integer
constant which requires exactly 32-bits? We have 3 choices:
1. We don't (current approach, probably not acceptable)
2. PyInt_FromLong(x)
3. A Python Long representing the actual value. It's not so easy
to write down the correct expression for this one ;-)
-Dave
--
David Abrahams
dave at boost-consulting.com * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution
More information about the Cplusplus-sig
mailing list