X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src-main%2Fprimitives.cl;h=05317700ef4ce48fab4c78997b8b493bcb18109a;hb=9fead1fa1dc1cd65a3c803518b2a56cae2624d2d;hp=6fe54ba1d7e918f4a6401e190263aa2a36f4685c;hpb=0eaed82d93e9d2afbdcbdb8b49b0fc2386f86963;p=uffi.git diff --git a/src-main/primitives.cl b/src-main/primitives.cl index 6fe54ba..0531770 100644 --- a/src-main/primitives.cl +++ b/src-main/primitives.cl @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: primitives.cl,v 1.1 2002/09/16 17:54:30 kevin Exp $ +;;;; $Id: primitives.cl,v 1.2 2002/09/30 01:57:32 kevin Exp $ ;;;; ;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -188,8 +188,22 @@ supports takes advantage of this optimization." (basic-convert-from-uffi-type :cstring-returning)) (t (basic-convert-from-uffi-type type))) - (cons (convert-from-uffi-type (first type) context) - (convert-from-uffi-type (rest type) context)))) + (let ((sub-type (car type))) + (case sub-type + (cl:quote + (convert-from-uffi-type (cadr type) context)) + (:struct-pointer + #+openmcl `(:* (:struct ,(convert-from-uffi-type (cadr type) :struct))) + #-openmcl `(* ,(convert-from-uffi-type (cadr type) :struct)) + ) + (:struct + #+openmcl `(:struct ,(convert-from-uffi-type (cadr type) :struct)) + #-openmcl (convert-from-uffi-type (cadr type) :struct) + ) + (t + (cons (convert-from-uffi-type (first type) context) + (convert-from-uffi-type (rest type) context))))))) +