X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fprimitives.lisp;h=a43eb8dd24e4c2ff1b615475be0cdd900113cfae;hb=4440dd8df02fa22120c5c742989b1daa1fde84d4;hp=35c1d86ee96d18a68e49cded2f9d208e33586fd4;hpb=72190043201239567658cfbae1c36bbd7233419b;p=uffi.git diff --git a/src/primitives.lisp b/src/primitives.lisp index 35c1d86..a43eb8d 100644 --- a/src/primitives.lisp +++ b/src/primitives.lisp @@ -7,9 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id$ -;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2010 by Kevin M. Rosenberg ;;;; ;;;; ************************************************************************* @@ -98,6 +96,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 +118,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 +141,16 @@ 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))) @@ -156,6 +168,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 +188,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 +208,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 +229,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*