[Ecls-list] coercing :short in static-ffi
Juan Jose Garcia-Ripoll
jjgarcia at users.sourceforge.net
Sat Sep 29 12:46:17 UTC 2007
Hi Marc,
I need to understand better what your problem is.
2007/9/18, marc daya <marc.daya+ecl at gmail.com>:
> I'm working with the native (C) library that has functions that expect
> short (int16_t) arguments, but :short is not coerced during static-FFI
> compilation.
First of all, short = int16_t is a platform specific thing. This
equivalence is not true in general. But what I do not understand is
when you say ":short is not coerced". Can you post an specific
example? Does the compiler fail to work with a function that takes
:short arguments?
> There's a comment in the cmpffi.lsp saying that shorts are never selected
> to unbox data; what is the reason for shorts being handled differently to
> bytes and ints?
Simply that ints >= short. The latter are contained in the former.
Thus, whenever ECL needs to convert a fixnum into a C integer, it uses
cl_fixnum or cl_index. But that should not be a problem, since C
automatically coerces any integer to a smaller type -- it does not
check for overflows, though.
Cheers,
Juanjo
--
Facultad de Fisicas, Universidad Complutense,
Ciudad Universitaria s/n Madrid 28040 (Spain)
http://juanjose.garciaripoll.googlepages.com
More information about the ecl-devel
mailing list