Hi, Luis I think you should keep this change, because it really works.
Before this change, the IOlib project [1] cannot be compiled by 32-bit LispWorks, because some UNIX system calls are taken 64bit integers as arguments. Now with your change, IOlib can be compiled & loaded correctly on 32-bit LispWorks. Regards, Chun Tian (binghe) > On Wed, Dec 23, 2009 at 4:07 AM, Matt Lamari <matt.lam...@gmail.com> wrote: >> >> Sorry for the late response. >> >> I don't have the code/opportunity to test all the cases; but wonder if >> the enclosed patch - touching all the #+lispworks-64bit, is what's >> really needed. . . ? > > Well, could you tell me whether my previous patch works for you and > why you need this one? > > >> I.e. every 64-bit replaced with (or lispworks5.1 lispworks-64bit) >> or the like >> >> >> >> >> Luís Oliveira wrote: >>> On Thu, Nov 19, 2009 at 5:33 PM, Matt Lamari <matt.lam...@gmail.com> wrote: >>> >>>> (defcfun test :int64) >>>> >>> [...] >>> >>>> The long-long gets through and fails in the lispworks-specific "Ecase" >>>> (that has them removed for non-64-bit lispworks). >>>> >>> >>> Long-long emulation is not implemented for DEFCFUN, DEFCALLBACK, etc. >>> It turns out that Lispworks does in fact support long-long on 32-bit >>> platforms for DEFCFUN at least. Please let me know if the attached >>> patch works for you. >>> >>> >> >> >> --- cffi-lispworks.lisp 2009-06-16 11:20:08.000000000 -0500 >> +++ c:\t\cffi-lispworks.lisp 2009-12-22 22:04:10.350220400 -0600 >> @@ -62,7 +62,7 @@ >> >> ;;;# Misfeatures >> >> -#-lispworks-64bit (pushnew 'no-long-long *features*) >> +#-(or lispworks5.1 lispworks-64bit) (pushnew 'no-long-long *features*) >> >> ;;;# Symbol Case >> >> @@ -156,9 +156,9 @@ >> (:unsigned-int '(:unsigned :int)) >> (:long :long) >> (:unsigned-long '(:unsigned :long)) >> - #+lispworks-64bit >> + #+(or lispworks5.1 lispworks-64bit) >> (:long-long '(:long :long)) >> - #+lispworks-64bit >> + #+(or lispworks5.1 lispworks-64bit) >> (:unsigned-long-long '(:unsigned :long :long)) >> (:float :float) >> (:double :double) >> @@ -170,10 +170,10 @@ >> #+#.(cl:if (cl:find-symbol "FOREIGN-TYPED-AREF" "FLI") '(and) '(or)) >> (defun convert-foreign-typed-aref-type (cffi-type) >> (ecase cffi-type >> - ((:char :short :int :long #+lispworks-64bit :long-long) >> + ((:char :short :int :long #+(or lispworks5.1 lispworks-64bit) >> :long-long) >> `(signed-byte ,(* 8 (%foreign-type-size cffi-type)))) >> ((:unsigned-char :unsigned-short :unsigned-int :unsigned-long >> - #+lispworks-64bit :unsigned-long-long) >> + #+(or lispworks5.1 lispworks-64bit) :unsigned-long-long) >> `(unsigned-byte ,(* 8 (%foreign-type-size cffi-type)))) >> (:float 'single-float) >> (:double 'double-float))) >> @@ -186,7 +186,7 @@ >> >> ;; Lispworks 5.0 on 64-bit platforms doesn't have [u]int64 support in >> ;; FOREIGN-TYPED-AREF. That was implemented in 5.1. >> -#+(and lispworks-64bit lispworks5.0) >> +#+(and (or lispworks5.1 lispworks-64bit) lispworks5.0) >> (defun 64-bit-type-p (type) >> (member type '(:long :unsigned-long :long-long :unsigned-long-long))) >> >> @@ -196,7 +196,7 @@ >> (define-compiler-macro %mem-ref (&whole form ptr type &optional (off 0)) >> (if (constantp type) >> (let ((type (eval type))) >> - (if (or #+(and lispworks-64bit lispworks5.0) (64-bit-type-p type) >> + (if (or #+(and (or lispworks5.1 lispworks-64bit) lispworks5.0) >> (64-bit-type-p type) >> (eql type :pointer)) >> (let ((fli-type (convert-foreign-type type)) >> (ptr-form (if (eql off 0) ptr `(inc-pointer ,ptr ,off)))) >> @@ -230,7 +230,7 @@ >> (if (constantp type) >> (once-only (val) >> (let ((type (eval type))) >> - (if (or #+(and lispworks-64bit lispworks5.0) (64-bit-type-p type) >> + (if (or #+(and (or lispworks5.1 lispworks-64bit) lispworks5.0) >> (64-bit-type-p type) >> (eql type :pointer)) >> (let ((fli-type (convert-foreign-type type)) >> (ptr-form (if (eql off 0) ptr `(inc-pointer ,ptr ,off)))) >> >> > > > > -- > Luís Oliveira > http://r42.eu/~luis/ > > _______________________________________________ > cffi-devel mailing list > cffi-devel@common-lisp.net > http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ cffi-devel mailing list cffi-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel