;;;;
;;;; 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.
;;;;
(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))
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))
(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)