;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Feb 2002
;;;;
-;;;; $Id: primitives.cl,v 1.4 2002/03/14 21:03:12 kevin Exp $
+;;;; $Id: primitives.cl,v 1.6 2002/03/15 11:38:13 kevin Exp $
;;;;
;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
(declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0)))
(in-package :uffi)
-(defmacro def-constant (name value)
+(defmacro def-constant (name value &key (export nil))
"Macro to define a constant and to export it"
`(eval-when (:compile-toplevel :load-toplevel :execute)
(defconstant ,name ,value)
- (export ',name)))
+ ,(if export (list 'export `(quote ,name)) (values))))
(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))
#+(or lispworks allegro)
`(deftype ,name () t)
#+cmu
t
nil))
+(defmacro ensure-char (val)
+ `(etypecase ,val
+ (integer
+ (code-char ,val))
+ (character
+ ,val)))
(defmacro def-foreign-type (name type)
#+lispworks `(fli:define-c-typedef ,name ,(convert-from-uffi-type type :type))