[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: using void* in LuaJIT2 FFI
- From: Stefan Behnel <stefan_ml@...>
- Date: Sat, 12 Feb 2011 17:06:35 +0100
I'm thinking about using LuaJIT's FFI in the next lupa release to provide
access to CPython's buffer interface. This would allow direct low-level
access to NumPy matrices and the like, thus providing an efficient Lua
companion for the huge set of scientific computation libraries in SciPy,
Sage and the like.
Now, these buffers are basically represented as a struct containing a void*
together with layout meta data, and it's up to the code that uses them to
cast the pointer to the appropriate item type. This cannot be handled
transparently inside of lupa, as only the user code will know the correct
type to use. So I'm wondering how to best design the interface here. From
the current documentation at
which is more tutorial style than a reference, I cannot see how such a
runtime cast would be supported.
Is there a way to cast a void pointer in LuaJIT-FFI code?
OTOH, I could also imagine letting the user code provide the item type as a
string so that lupa could generate corresponding FFI definition (C) code on
the fly that simply defines the returned buffer struct with a pointer of
the provided type (instead of using the original C declaration).
Any comments here?
I'm also missing an example of how to actually inject C pointers into the
FFI using code. Does the FFI automatically dereference (light)userdata
objects, for example?