[cffi-devel] :int64 on 32-bit Lispworks Professional for Windows

Chun Tian (binghe) binghe.lisp at gmail.com
Mon Mar 2 13:55:45 UTC 2009


Hi, Martin

Thanks for clarifying. I've found your last comments:

"""
   Support for :long-long is available in the LispWorks 5.0 FLI:
   - On all 64-bit platforms.
   - For FLI:DEFINE-FOREIGN-FUNCTION on all 32-bit platforms.

   It is not avaliable in:
   - LispWorks 4.
   - For data access functions such as FLI:DEREFERENCE on 32-bit  
platforms.

   Because of this last restriction, if CFFI wants to support :long- 
long on
   32-bit LispWorks platforms, then it can do it for DEFCFUN but not  
other APIs.
   A single cffi-feature is not enough to describe this, so it could  
just support
   it on 64-bit platforms by using #-lispworks-64bit to enable
   cffi-features:no-long-long.
"""

(And the bug in FOREIGN-TYPED-AREF last time we talked has been fixed  
in LispWorks 5.1)

Current CFFI code just set a "no-long-long" feature on 32-bit  
lispworks, and I agree that a single cffi feature is not enough to  
describe this. Let me see what else I can do. I need IOlib on 32-bit  
LispWorks.

--binghe

On 2009-3-2, at 20:32, Martin Simmons wrote:

>>>>>> On Mon, 2 Mar 2009 00:33:19 +0800, Chun Tian (binghe) said:
>>
>> Just no long-long support in 32-bit LispWorks FLI. This also cause
>> IOlib not work on all 32-bit LispWorks (on Linux, Mac OS, ...)
>
> That's not quite true.  The FLI in 32-bit LispWorks 5.1 supports the  
> long-long
> type for foreign function arguments and return values.
>
> See http://www.mail-archive.com/cffi-devel@common-lisp.net/msg01174.html
>
>>
>> On 2009-3-1, at 21:22, Andreas Thiele wrote:
>>
>>> Hi,
>>>
>>> I get the following error
>>>
>>> Error: :LONG-LONG fell through ECASE expression.
>>> Wanted one of (:CHAR :UNSIGNED-CHAR :SHORT :UNSIGNED-
>>> SHORT :INT :UNSIGNED-INT :LONG :UNSIGNED-
>>> LONG :FLOAT :DOUBLE :POINTER :VOID).
>>>
>>> when I try
>>>
>>> (defcfun sqlite3-last-insert-rowid :int64
>>>  (db p-sqlite3))
>>>
>>> I think :in64 or :long-long is emulated on 32-bit Lispworks?
>>>
>>> What should I do? The function works, if I use :int32, but I wonder
>>> why.
>>>
>>> Any hint or help appreciated.
>>>
>>>
>>> Regards
>>> Andreas
>>> _______________________________________________
>>> cffi-devel mailing list
>>> cffi-devel at common-lisp.net
>>> http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel
>>
>> --
>> Chun Tian (binghe)
>> NetEase.com, Inc.
>> P. R. China
>>
>>
>> _______________________________________________
>> cffi-devel mailing list
>> cffi-devel at common-lisp.net
>> http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel
>>
>
> -- 
> Martin Simmons
> LispWorks Ltd
> http://www.lispworks.com/

--
Chun Tian (binghe)
NetEase.com, Inc.
P. R. China





More information about the cffi-devel mailing list