X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fprimitives.cl;h=5ec2cd34dc31e4e8da748979eca43cd513f1a19f;hb=0c9dc6958a373b41b8cc25e9e121c36dedc289d4;hp=0b5f05585ea30191d0897602e5eb1103fb64bfa5;hpb=f860fa69768ba86084196b9e482d497d7ef60901;p=uffi.git diff --git a/src/primitives.cl b/src/primitives.cl index 0b5f055..5ec2cd3 100644 --- a/src/primitives.cl +++ b/src/primitives.cl @@ -1,4 +1,4 @@ -;;;; -*- Mode: ANSI-Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*- +;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10; Package: UFFI -*- ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: primitives.cl,v 1.12 2002/03/21 11:38:07 kevin Exp $ +;;;; $Id: primitives.cl,v 1.18 2002/05/17 16:51:08 kevin Exp $ ;;;; ;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -23,7 +23,8 @@ "Macro to define a constant and to export it" `(eval-when (:compile-toplevel :load-toplevel :execute) (defconstant ,name ,value) - ,(if export (list 'export `(quote ,name)) (values)))) + ,(when export (list 'export `(quote ,name))) + ',name)) (defmacro def-type (name type) "Generates a (deftype) statement for CL. Currently, only CMUCL @@ -67,9 +68,10 @@ supports takes advantage of this optimization." ) "Conversions in CMUCL or def-foreign-type are different thatn in def-function") +(defparameter +type-conversion-list+ nil) #+cmu -(defconstant +type-conversion-list+ +(setq +type-conversion-list+ '((* . *) (:void . c-call:void) (:short . c-call:short) (:pointer-void . (* t)) @@ -84,7 +86,7 @@ supports takes advantage of this optimization." (:float . c-call:float) (:double . c-call:double) (:array . alien:array))) #+allegro -(defconstant +type-conversion-list+ +(setq +type-conversion-list+ '((* . *) (:void . :void) (:short . :short) (:pointer-void . (* :void)) @@ -97,12 +99,13 @@ supports takes advantage of this optimization." (:float . :float) (:double . :double) (:array . :array))) #+lispworks -(defconstant +type-conversion-list+ +(setq +type-conversion-list+ '((* . :pointer) (:void . :void) (:short . :short) - (:pointer-void . (:pointer :unsigned :void)) - (:cstring . (:reference-pass :ef-mb-string :allow-null t)) - (:cstring-returning . (:reference :ef-mb-string :allow-null t)) + (:pointer-void . (:pointer :void)) + (:cstring . (:reference-pass (:ef-mb-string :external-format :latin-1) + :allow-null t)) + (:cstring-returning . (:reference (:ef-mb-string :external-format :latin-1) :allow-null t)) (:char . :char) (:byte :byte) (:unsigned-char . (:unsigned :char))