[Ecls-list] c-inline and multiple values
Juan Jose Garcia Ripoll
lisp at arrakis.es
Tue Jan 25 01:45:06 UTC 2005
Hi Julian,
the problem is that defentry is intended for C functions that return C
objects, not C functions that know about ECL. The reason is that
DEFENTRY generates a wrapper around the function that you declare, and
this wrapper in turn produces the output values that your lisp code
understands. Actually DEFENTRY is just a macro that expands into a
C-INLINE form: try using macroexpand on it!
Does your function take lisp objects as arguments? Then you can simply
register it with cl_def_c_function/cl_def_c_function_va.
If not, an example of what you are trying to do would be nice, so that I
can either suggest some other possibility or rewrite C-INLINE to suit
your needs.
Juanjo
Julian Stecklina wrote:
>Hello,
>
>is it possible to return multiple values from a c-inline form? Or if
>that is not possible, how do I make the runtime aware of a C function
>returning multiple values?
>
>Say if I have
>
>(Clines
>"
>cl_object static foo (..)
>{
> ...
> NVALUES=2;
> VALUES(0) = ...;
> VALUES(1) = ...;
> return VALUES(0);
>}
>")
>
>When I do a:
>
>(defentry foo ...)
>
>and call that, it seems from the C code generated, that the multiple
>values are lost. Is this true?
>
>Regards,
>
>
More information about the ecl-devel
mailing list