Update AllegroCL for :long-long on 64-bit platforms
[uffi.git] / src / primitives.lisp
index 66a0a7c7e845ecf7fb5f6993d4c25c1c83ab58f3..14763f732227e650dca9bac9cc898417172c6056 100644 (file)
@@ -141,7 +141,15 @@ supports takes advantage of this optimization."
       (:unsigned-short . c-call:unsigned-short)
       (:int . alien:integer) (:unsigned-int . c-call:unsigned-int)
       (:long . c-call:long) (:unsigned-long . c-call:unsigned-long)
+      #+#.(cl:if (cl:and (cl:find-package (cl:string '#:c-call))
+                         (cl:find-symbol (cl:string '#:long-long)
+                                         (cl:string '#:c-call)))
+                 '(and) '(or))
       (:long-long . c-call:long-long)
+      #+#.(cl:if (cl:and (cl:find-package (cl:string '#:c-call))
+                         (cl:find-symbol (cl:string '#:unsigned-long-long)
+                                         (cl:string '#:c-call)))
+                 '(and) '(or))
       (:unsigned-long-long . c-call:unsigned-long-long)
       (:float . c-call:float) (:double . c-call:double)
       (:array . alien:array)))
@@ -177,10 +185,15 @@ supports takes advantage of this optimization."
       (:unsigned-char . :unsigned-char)
       (:int . :int) (:unsigned-int . :unsigned-int)
       (:long . :long) (:unsigned-long . :unsigned-long)
+#+64bit (:unsigned-long-long . :unsigned-long)
+#+64bit (:long-long . :unsigned-long)
       (:float . :float) (:double . :double)
       (:array . :array)))
 
-#+(or allegro cormanlisp)
+#+(and allegro (not 64bit))
+(push 'uffi:no-long-long cl:*features*)
+
+#+cormanlisp
 (push 'uffi:no-long-long cl:*features*)
 
 #+lispworks