(:unsigned-short . (sb-alien:unsigned 16))
(:int . (sb-alien:signed 32))
(:unsigned-int . (sb-alien:unsigned 32))
- (:long . (sb-alien:signed 32))
- (:unsigned-long . (sb-alien:unsigned 32))
+ #-x86-64 (:long . (sb-alien:signed 32))
+ #-x86-64 (:unsigned-long . (sb-alien:unsigned 32))
+ #+x86-64 (:long . (sb-alien:signed 64))
+ #+x86-64 (:unsigned-long . (sb-alien:unsigned 64))
(:float . sb-alien:single-float)
(:double . sb-alien:double-float)
(:void . t)
(setq *type-conversion-list*
'((* . *) (:void . sb-alien:void)
(:pointer-void . (* t))
- (:cstring . sb-alien:c-string)
+ #-sb-unicode(:cstring . sb-alien:c-string)
+ #+sb-unicode(:cstring . sb-alien:utf8-string)
(:char . sb-alien:char)
(:unsigned-char . (sb-alien:unsigned 8))
(:byte . (sb-alien:signed 8))
(:unsigned-byte . (sb-alien:unsigned 8))
(:short . sb-alien:short)
(:unsigned-short . sb-alien:unsigned-short)
- (:int . sb-alien:integer) (:unsigned-int . sb-alien:unsigned-int)
+ (:int . sb-alien:int) (:unsigned-int . sb-alien:unsigned-int)
(:long . sb-alien:long) (:unsigned-long . sb-alien:unsigned-long)
(:float . sb-alien:float) (:double . sb-alien:double)
(:array . sb-alien:array)))
(t
(basic-convert-from-uffi-type type)))
(let ((sub-type (car type)))
- (cond
- ((eq sub-type 'cl:quote)
- (convert-from-uffi-type (cadr type) context))
- #+sbcl
- ((and (eq sub-type :array)
- (or (eq context :declare) (eq context :routine))
- (= 2 (length type)))
- `(sb-alien:array ,(%convert-from-uffi-type (second type) context) nil))
- #+cmu
- ((and (eq sub-type :array)
- (or (eq context :declare) (eq context :routine))
- (= 2 (length type)))
- `(alien:array ,(%convert-from-uffi-type (second type) context) nil))
- ((eq sub-type :struct-pointer)
- #+mcl `(:* (:struct ,(%convert-from-uffi-type (cadr type) :struct)))
- #-mcl (%convert-from-uffi-type (list '* (second type)) :struct)
- )
- ((eq sub-type :struct)
+ (case sub-type
+ (cl:quote
+ (convert-from-uffi-type (cadr type) context))
+ (:struct-pointer
+ #+mcl `(:* (:struct ,(%convert-from-uffi-type (cadr type) :struct)))
+ #-mcl (%convert-from-uffi-type (list '* (cadr type)) :struct)
+ )
+ (:struct
#+mcl `(:struct ,(%convert-from-uffi-type (cadr type) :struct))
- #-mcl (%convert-from-uffi-type (second type) :struct)
+ #-mcl (%convert-from-uffi-type (cadr type) :struct)
)
(t
(cons (%convert-from-uffi-type (first type) context)