X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fstrings.lisp;h=ebdffebadf4893287c870b97cd5879ecf6462993;hb=48ce70f207ba97c0620bfaa472619f4c3c771a21;hp=1e90118c174e8a10f25dda0f06224d533a7c1ff3;hpb=87acde9ae931ba8ac7bd486809f6dab3b2448790;p=uffi.git diff --git a/src/strings.lisp b/src/strings.lisp index 1e90118..ebdffeb 100644 --- a/src/strings.lisp +++ b/src/strings.lisp @@ -9,11 +9,7 @@ ;;;; ;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg -;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; ************************************************************************* (in-package #:uffi) @@ -109,11 +105,11 @@ that LW/CMU automatically converts strings from c-calls." #+lispworks (let ((stored (gensym))) `(let ((,stored ,obj)) - `(if (null ,stored) - +null-cstring-pointer+ - (fli:convert-to-foreign-string - ,stored - :external-format '(:latin-1 :eol-style :lf))))) + (if (null ,stored) + +null-cstring-pointer+ + (fli:convert-to-foreign-string + ,stored + :external-format '(:latin-1 :eol-style :lf))))) #+allegro (let ((stored (gensym))) `(let ((,stored ,obj)) @@ -288,6 +284,11 @@ that LW/CMU automatically converts strings from c-calls." (free-foreign-object ,foreign-string) ,result))) +(defmacro with-foreign-strings (bindings &body body) + `(with-foreign-string ,(car bindings) + ,@(if (cdr bindings) + `((with-foreign-strings ,(cdr bindings) ,@body)) + body))) ;; Modified from CMUCL's source to handle non-null terminated strings #+cmu