X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fprimitives.cl;h=294dcdc9b784a35f6efe09bab73cdd790f217cc1;hb=02d03aeb9bb5adf1cf5b1d6ea598d6446a631aea;hp=ee7695f06fb95b6f0f011910246d1d77eaf9cba8;hpb=bf5c7e7c36474375604bcbcedea8794a68dd1784;p=uffi.git diff --git a/src/primitives.cl b/src/primitives.cl index ee7695f..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.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 ;;;; @@ -19,15 +19,17 @@ (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 @@ -40,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))