From: Cyrus H. <ch...@bo...> - 2008-10-14 18:59:10
|
It's been a while since I've used sb-alien, so bear with me... But I'm currently allocating some alien storage with the following: (let ((data (sb-alien:make-alien (* double-float) rows)) ...) I'd like to use with-alien so that the alien storage is on the stack, but the problem is that while this: (sb-alien:with-alien ((data2 (array (* double) 3))) ...) works, this: (sb-alien:with-alien ((data2 (array (* double) rows))) ...) Is there a way we could modify with-alien such that it evaluates the size argument of array type specifiers? thanks, cyrus |
From: Nikodemus S. <nik...@ra...> - 2008-10-15 09:08:48
|
On Tue, Oct 14, 2008 at 9:58 PM, Cyrus Harmon <ch...@bo...> wrote: > Is there a way we could modify with-alien such that it evaluates the > size argument of array type specifiers? No deep fundamental reason that I can see. I think the easiest way would be to start by giving the alloc-alien-stack-space a calloc() -like interface: element-size in :info, and number of elements as a possibly constant argument. Then make-local-alien could accept two arguments, info and count -- and the optimizer would check only constantness of the info, etc. Cheers, -- Nikodemus |