Hi you CFFI gurus out there !
I am having a hard time to understand why CFFI won't accept the following definition on AllegroCL 8.1 on Mac OS X (10.5.6):
(defctype magick_int64_t :long-long) ;; This goes ok (defctype MagickSizeType magick_int64_t) ;; This goes ok
(defcfun "MagickGetImageSize" MagickSizeType (wand :pointer))
This last definition produces the error
:LONG-LONG fell through a ECASE form. The valid cases were :CHAR, :UNSIGNED-CHAR, :SHORT, :UNSIGNED-SHORT, :INT, :UNSIGNED-INT, :LONG, :UNSIGNED-LONG, :FLOAT, :DOUBLE, :POINTER, and :VOID. [Condition of type EXCL:CASE-FAILURE]
Looking into cffi/src/types.h I find that even on systems where :no- long-long is given an emulation should kick in...
... Any hints/pointers really appreciated ... Thanks!!!
Best,
Frank
-- Frank Goenninger
Cell: +49 175 4321058 E-Mail: frgo@me.com
On Wed, Apr 29, 2009 at 7:18 AM, Frank Goenninger frgo@me.com wrote:
Looking into cffi/src/types.h I find that even on systems where :no- long-long is given an emulation should kick in...
Allegro does not support :LONG-LONG. We are able to implement that ourselves for MEM-REF, DEFCSTRUCT and a few other places but not for DEFCFUN or FOREIGN-FUNCALL.
If you wish to use :LONG-LONG on Allegro, you have a couple of alternatives.
(0) poke Franz to implement it.
(1) use CFFI-GROVEL.
(2) use Lyam Healy's FSVB which leverages libffi. http://repo.or.cz/w/fsbv.git
HTH.
On Wed, 2009-04-29 at 15:14 +0100, Luís Oliveira wrote:
On Wed, Apr 29, 2009 at 7:18 AM, Frank Goenninger frgo@me.com wrote:
Looking into cffi/src/types.h I find that even on systems where :no- long-long is given an emulation should kick in...
Allegro does not support :LONG-LONG. We are able to implement that ourselves for MEM-REF, DEFCSTRUCT and a few other places but not for DEFCFUN or FOREIGN-FUNCALL.
If you wish to use :LONG-LONG on Allegro, you have a couple of alternatives.
(0) poke Franz to implement it.
(1) use CFFI-GROVEL.
(2) use Lyam Healy's FSVB which leverages libffi. http://repo.or.cz/w/fsbv.git
I strongly suggest no. 0, which on the long run is best for all.