X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fprimitives.cl;h=1df69e1cbdf5ecb3c4ba3288d2ee073518df62ca;hb=63b0648b562bc5a8db5ef013804b1ff4e5c52314;hp=a0bcae74361768916e7d066a5478042d07e90830;hpb=0e2874cd053926b5687403d7a824f8eea28f847b;p=uffi.git diff --git a/src/primitives.cl b/src/primitives.cl index a0bcae7..1df69e1 100644 --- a/src/primitives.cl +++ b/src/primitives.cl @@ -9,7 +9,7 @@ ;;;; ;;;; Copyright (c) 2002 Kevin M. Rosenberg ;;;; -;;;; $Id: primitives.cl,v 1.2 2002/03/10 22:29:47 kevin Exp $ +;;;; $Id: primitives.cl,v 1.3 2002/03/11 18:00:57 kevin Exp $ ;;;; ;;;; This file is part of the UFFI. ;;;; @@ -36,22 +36,15 @@ (defconstant ,name ,value) (export ',name))) -(defmacro uffi-declare (type name) - "Generates a declare statement for CL. Currently, only CMUCL -supports this." +(defmacro def-type (name type) + "Generates a (deftype) statement for CL. Currently, only CMUCL +supports takes advantage of this optimization." #+(or lispworks allegro) - (declare (ignore type name)) + `(deftype ,name () t) #+cmu - `(declare (type (alien:alien ,type)) ,name) + `(deftype ,name () '(alien:alien ,(convert-from-uffi-type type :declare))) ) -(defmacro slot-type (type) - #+(or lispworks allegro) - (declare (ignore type)) - #+(or lispworks allegro) - t - #+cmu `'(alien:alien ,type)) - (defmacro null-char-p (val) `(if (or (eql ,val 0) (eq ,val #\Null)) @@ -59,7 +52,7 @@ supports this." nil)) -(defmacro def-type (name type) +(defmacro def-foreign-type (name type) #+lispworks `(fli:define-c-typedef ,name ,(convert-from-uffi-type type :type)) #+allegro `(ff:def-foreign-type ,name ,(convert-from-uffi-type type :type)) #+cmu `(alien:def-alien-type ,name ,(convert-from-uffi-type type :type)) @@ -131,7 +124,7 @@ supports this." (dolist (type +cmu-def-type-list+) (setf (gethash (car type) +cmu-def-type-hash+) (cdr type))) -(defun ph (&optional (os *standard-output*)) +(defmethod ph (&optional (os *standard-output*)) (maphash #'(lambda (k v) (format os "~&~S => ~S" k v)) +type-conversion-hash+)) (defun convert-from-uffi-type (type context)