Thanks, the patch fixes the problem. Works perfectly. Indy
On Mon, Sep 21, 2009 at 10:28 PM, Jim Ursetto <[email protected]> wrote: > Looks like there are two issues here. First, try applying the > attached patch to fix a bug in c-backend. Second, your usage is > incorrect--ref types require an operating system pointer or a locative > (since they can be modified)--ref is the analog of c-pointer. For > example, you can change your example to: > > (print > (let-location ((c char #\c)) > ((foreign-lambda* bool (((ref char) mC)) > "C_return(mC == 'c');") > (location c)))) > > Of course, you must then compile with csc -c++. > Jim > > 2009/9/21 Nicholas "Indy" Ray <[email protected]>: > > I've been trying to use the "ref" FFI type (as documented here: > > http://chicken.wiki.br/man/4/Foreign%20type%20specifiers#(ref TYPE) ) > with > > no success. Here is an example of my usage: > > > > (print > > ((foreign-lambda* bool (((ref char) mC)) > > "C_return(mC == 'c');") > > #\c)) > > > > compiling this with csc from Chicken 4 gives me the error: > > Error: illegal foreign type `ref' > > I find this odd as in c-backend.scm:1170 in foreign-type-declaration this > > code exists: > > ((and (= 2 len) > > (eq? 'ref (car type))) > > (foreign-type-declaration (cadr type) (string-append "&" target)) ) > > > > Implying that ref should still be supported. > > Any help with this would be greatly appreciated. > > Indy > > _______________________________________________ > > Chicken-users mailing list > > [email protected] > > http://lists.nongnu.org/mailman/listinfo/chicken-users > > > > >
_______________________________________________ Chicken-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/chicken-users
