On Fri, 07 Nov 2008 10:22:29 +0100, Giovanni Bajo <[EMAIL PROTECTED]> wrote: > On sab, 2008-11-01 at 17:29 +0000, Phil Thompson wrote: >> There will be new releases of PyQt, SIP and QScintilla in the next few >> days >> based on current snapshots. >> >> Let me know if there is anything you are expecting that doesn't seem to >> be >> there. > > sip.voidptr() only accepts a Python "int" in the constructor (thus, a > negative number for pointers above half of the memory address space). > This doesn't match the choice made by Python's module struct (see 'P' > type specificier for void*) and ctypes (see addressof()): they both > always return a positive number to represent a void*, possibly promoted > to Python long if necessary. > > The different choice made by sip.voidptr() makes it harder to > interoperate with such modules. Specifically, it becomes very difficult > to write code that passes void* around and works on both 32 bit and 64 > bit platforms. > > It would be great if: > > * sip.voidptr() accepted also a (positive) long as argument, to > represent an address. This ought to be fully backward-compatible. > * sip.voidptr could implement __long__ differently from __int__, and > always return a positive long. I guess this is not fully backward > compatible (as long(ptr) currently defaults to __int__) but voidptr > isn't probably the most widely used class after all. Up to you. > > Eventually, you might want to get rid of the negative ints. I understand > where it came from, but it doesn't match how other Python builtin > modules has chosen to handle it (plus it's doesn't make sense if you do > pointer arithmetic in Python).
Also added to the TODO list. Thanks, Phil _______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
