From: Sam S. <sd...@gn...> - 2001-06-07 17:55:22
|
> * In message <011401c0eee8$9312f390$4381fb18@CX417245D> > * On the subject of "Re: [clisp-list] Re: clisp ffi" > * Sent on Wed, 6 Jun 2001 17:27:02 -0700 > * Honorable "Eric de Groot" <er...@er...> writes: > > in C, int (*f)(); and int f(); are not equivalent. year - I got it mixed up with the fact that you can write, say, "sin" instead of "&sin" for the address of the functions "double sin(double)". please apply this patch to foreign1.lisp and try again. your help is greatly appreciated. @@ -601,7 +546,17 @@ ((c-ptr c-ptr-null c-array-ptr) (to-c-typedecl (svref c-type 1) (format nil "* ~A" name))) (c-function - (to-c-typedecl (svref c-type 1) (format nil "~A ()" name))) + (to-c-typedecl (svref c-type 1) + (format nil "(~A) (~{~A~^,~})" name + (do ((ii 0 (+ 2 ii)) ret + (arg (gensym "arg"))) + ((= (length (svref c-type 2)) ii) + (nreverse ret)) + (push (to-c-typedecl + (svref (svref c-type 2) ii) + (format nil "~a_~d" + arg (/ ii 2))) + ret))))) (t (error (ENGLISH "illegal foreign data type ~S") c-type)))))))) -- Sam Steingold (http://www.podval.org/~sds) Support Israel's right to defend herself! <http://www.i-charity.com/go/israel> Read what the Arab leaders say to their people on <http://www.memri.org/> God had a deadline, so He wrote it all in Lisp. |