From: Andreas F. <as...@bo...> - 2004-07-20 18:00:27
|
Today, Julian Stecklina <der...@we...> wrote: > if I define a structure in a grovel constants file, > e.g. foo. I get a macro called with-foo that creates a foo structure > to be used in the dynamic extent of its body. Right. > Now I need to pass a pointer to this structure to a C function. How > would I accomplish this? sb-alien:addr does not work. :-/ That's true, too. What you're trying to do depends on the version of SBCL that you're using; if you're using an SBCL before 0.8.10, you have to do something like: (with-alien-structure alien-object () (c-function (sb-grovel:array-data-address alien-object))) On SBCL 0.8.10 and later (recommended anyway), you'd just pass the alien-object, as they're of type (alien (* the-structure)), like so: (with-alien-structure alien-object () (c-function alien-object)) See also the readdir functions in your version of sb-posix for an example. If this doesn't work for you, I'd like to hear about it. Happy hacking, -- Andreas Fuchs, <as...@bo...>, as...@ja..., antifuchs |