X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fobjects.cl;h=377a0779c5de864ec290a0119ca188086dc5c54d;hb=a40d8005b6254f7ffad87603376d718711c184fa;hp=70d5abd238356d9dfa290f74a1a074be5f6f6c5b;hpb=1154e07dae80fba5bdfa1abbd3342dc16313f864;p=uffi.git diff --git a/src/objects.cl b/src/objects.cl index 70d5abd..377a077 100644 --- a/src/objects.cl +++ b/src/objects.cl @@ -1,4 +1,4 @@ -;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*- +;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10; Package: UFFI -*- ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: objects.cl,v 1.16 2002/03/29 15:06:07 kevin Exp $ +;;;; $Id: objects.cl,v 1.20 2002/07/10 02:26:32 kevin Exp $ ;;;; ;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -27,14 +27,14 @@ an array of TYPE with size SIZE. The TYPE parameter is evaluated." #+cmu `(alien:make-alien ,(convert-from-uffi-type (eval type) :allocation)) #+lispworks - `(fli:allocate-foreign-object :type ,(convert-from-uffi-type type :allocate)) + `(fli:allocate-foreign-object :type ',(convert-from-uffi-type type :allocate)) #+allegro `(ff:allocate-fobject ,(convert-from-uffi-type type :allocate) :c)) (progn #+cmu `(alien:make-alien ,(convert-from-uffi-type (eval type) :allocation) ,size) #+lispworks - `(fli:allocate-foreign-object :type ,(convert-from-uffi-type type :allocate) :nelems ,size) + `(fli:allocate-foreign-object :type ',(convert-from-uffi-type type :allocate) :nelems ,size) #+allegro `(ff:allocate-fobject '(:array ,(convert-from-uffi-type (eval type) :allocate) ,(eval size)) :c) ) @@ -55,6 +55,13 @@ an array of TYPE with size SIZE. The TYPE parameter is evaluated." #+cmu `(alien:null-alien ,obj) ) +(defmacro size-of-foreign-type (type) + #+lispworks `(fli:size-of ,type) + #+allegro `(ff:sizeof-fobject ,type) + #+cmu `(alien:alien-size ,type) + #+clisp `(values (ffi:size-of ,type)) + ) + (defmacro make-null-pointer (type) #+(or allegro cmu) (declare (ignore type))