В сообщении от 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.