On Wednesday, February 23, 2011 at 10:04 AM, Henry Mason wrote:

> On Feb 23, 2011, at 8:29 AM, Dan Colish wrote:
> 
> > I've been working on porting the OSX specific libraries in CPython to PyPy 
> > and I'm running into issues. The shape of many fundamental data structures 
> > used in the CoreFoundation libraries are not available to me. I was hoping 
> > to just fudge it by using a ptr to that structure, but it is not working 
> > out as I had hoped. Here is a terribly incorrect sample of what I've been 
> > hacking on: http://paste.pocoo.org/show/yENK4gE11yRM9i6p46Ra and here is 
> > the corresponding osx documentation: http://goo.gl/i6mYD. 
> 
> Are you saying you don't know the shape of the opaque CFTypes, like CFNumber? 
> Pointers to forward-declared structures is a pretty pervasive pattern in C 
> API. For example, I see the FILE* returned by fopen() declared like this:
> 
>  FILEP = rffi.COpaquePtr('FILE')
>  fopen = rffi.llexternal('fopen', [rffi.CCHARP, rffi.CCHARP], FILEP)
>  fclose = rffi.llexternal('fclose', [FILEP], rffi.INT)
> 
> in pypy/rpython/lltypesystem/test/test_ll2ctypes.py, so I imagine you'd be 
> able to do the same for CFTypes:
> 
>  CFAllocatorRef = rffi.COpaquePtr('__ CFAllocator')
>  CFNumberRef = rffi.COpaquePtr('__CFNumber')
>  CFNumberCreateInt = rffi.llexternal('CFNumberCreate', [CFAllocatorRef, 
> rffi.INT, rffi.VOIDP], CFNumberRef)
> 
> > 
This is exactly what I was looking for, thank you!

--Dan 
_______________________________________________
[email protected]
http://codespeak.net/mailman/listinfo/pypy-dev

Reply via email to