X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fprimitives.cl;h=294dcdc9b784a35f6efe09bab73cdd790f217cc1;hb=02d03aeb9bb5adf1cf5b1d6ea598d6446a631aea;hp=ee529806dcd8a55c3f981be65c9d2a4337936ba0;hpb=4dad9a2d968de896ec97c7470620ab921fcf275f;p=uffi.git diff --git a/src/primitives.cl b/src/primitives.cl index ee52980..294dcdc 100644 --- a/src/primitives.cl +++ b/src/primitives.cl @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: primitives.cl,v 1.5 2002/03/14 21:32:23 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 ;;;; @@ -19,11 +19,11 @@ (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 @@ -42,6 +42,12 @@ supports takes advantage of this optimization." 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))