Add :long-long support
[uffi.git] / src / primitives.lisp
index 35c1d86ee96d18a68e49cded2f9d208e33586fd4..50023b354919a1932ae1e06d07efcd29f4cbe89a 100644 (file)
@@ -98,6 +98,8 @@ supports takes advantage of this optimization."
       #-x86-64 (:unsigned-long . (alien:unsigned 32))
       #+x86-64 (:long . (alien:signed 64))
       #+x86-64 (:unsigned-long . (alien:unsigned 64))
+      (:long-long (alien:signed 64))
+      (:unsigned-long-long (alien:unsigned 64))
       (:float . alien:single-float)
       (:double . alien:double-float)
       (:void . t)
@@ -118,6 +120,8 @@ supports takes advantage of this optimization."
       #-x86-64 (:unsigned-long . (sb-alien:unsigned 32))
       #+x86-64 (:long . (sb-alien:signed 64))
       #+x86-64 (:unsigned-long . (sb-alien:unsigned 64))
+      (:long-long (sb-alien:signed 64))
+      (:unsigned-long-long (sb-alien:unsigned 64))
       (:float . sb-alien:single-float)
       (:double . sb-alien:double-float)
       (:void . t)
@@ -139,6 +143,8 @@ 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)
+      (:long-long . c-call:long-long)
+      (:unsigned-long-long . c-call:unsigned-long-long)
       (:float . c-call:float) (:double . c-call:double)
       (:array . alien:array)))
 
@@ -156,6 +162,8 @@ supports takes advantage of this optimization."
       (:unsigned-short . sb-alien:unsigned-short)
       (:int . sb-alien:int) (:unsigned-int . sb-alien:unsigned-int)
       (:long . sb-alien:long) (:unsigned-long . sb-alien:unsigned-long)
+      (:long-long . sb-alien:long-long)
+      (:unsigned-long-long . sb-alien:unsigned-long-long)
       (:float . sb-alien:float) (:double . sb-alien:double)
       (:array . sb-alien:array)))
 
@@ -174,6 +182,9 @@ supports takes advantage of this optimization."
       (:float . :float) (:double . :double)
       (:array . :array)))
 
+#+(or allegro cormanlisp)
+(push 'uffi:no-long-long cl:*features)
+
 #+lispworks
 (setq *type-conversion-list*
     '((* . :pointer) (:void . :void)
@@ -191,9 +202,14 @@ supports takes advantage of this optimization."
       (:unsigned-char . (:unsigned :char))
       (:int . :int) (:unsigned-int . (:unsigned :int))
       (:long . :long) (:unsigned-long . (:unsigned :long))
+      #+lispworks6 (:long-long . :int64)
+      #+lispworks6 (:unsigned-long-long . :uint64)
       (:float . :float) (:double . :double)
       (:array . :c-array)))
 
+#+(and lispworks (not lispworks6))
+(push 'uffi:no-long-long cl:*features)
+
 #+digitool
 (setq *type-conversion-list*
      '((* . :pointer) (:void . :void)
@@ -207,6 +223,8 @@ supports takes advantage of this optimization."
        (:long . :long) (:unsigned-long . :unsigned-long)
        (:float . :single-float) (:double . :double-float)
        (:array . :array)))
+#+digitool
+(push 'uffi:no-long-long cl:*features)
 
 #+openmcl
 (setq *type-conversion-list*