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

Kalyanov Dmitry kalyanov.dmitry at gmail.com
Sun Mar 1 18:47:56 UTC 2009


В сообщении от Sunday 01 of March 2009 16:22:53 Andreas Thiele написал(а):
> 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.
>

I think that in this case it is necessary to create a glue library in C that 
would return the 64-bit value as two 32-bit values:

void sqlite3_last_insert_rowid_1(sqlite3* db, uint32_t* high_part, uint32_t* 
low_part);

I've looked into CLSQL documentation, and CLSQL uses this approach.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <https://mailman.common-lisp.net/pipermail/cffi-devel/attachments/20090301/7f346aa4/attachment.sig>


More information about the cffi-devel mailing list