Update of /project/cl-carbon/cvsroot/CL-Carbon In directory common-lisp.net:/tmp/cvs-serv14938
Modified Files: package.lisp utils.lisp Log Message: Fixed macros in utils.lisp that were using FFI reader macros with side effects. This bug showed up as undeclared free variables that are created by the #$ reader macros. I also made some utility functions for the #_ reader macro functions being used in utils.lisp macros. This should allow dfsl files to work properly when loaded into an image even though they were created during a different lisp session.
I also did some package exports cleanup. Instead of using EXPORT in utils.lisp, I moved the exported symbols to the :exports section of the DEFPACKAGE form in package.lisp. At some point, those exports probably should be sorted into alphabetical order.
I tested these chages with Example which I have not made any changes to. Example symlinks in CL-Carbon, so the make script can't remove dfsl files built when making CL-Carbon which was hiding the bug from me. Example still seems to work. It just needs to use more of CL-Carbon :-).
Date: Sat May 21 09:27:22 2005 Author: dsteuber
Index: CL-Carbon/package.lisp diff -u CL-Carbon/package.lisp:1.1.1.1 CL-Carbon/package.lisp:1.2 --- CL-Carbon/package.lisp:1.1.1.1 Fri Apr 29 22:19:03 2005 +++ CL-Carbon/package.lisp Sat May 21 09:27:21 2005 @@ -8,7 +8,7 @@ ;;;; Programmer: David Steuber ;;;; Date Started: 1/21/2005 ;;;; -;;;; $Id: package.lisp,v 1.1.1.1 2005/04/29 20:19:03 dsteuber Exp $ +;;;; $Id: package.lisp,v 1.2 2005/05/21 07:27:21 dsteuber Exp $ ;;;; *********************************************************************** ;;;; ;;;; Copyright (c) 2005 by David Steuber @@ -74,6 +74,13 @@ "DISABLE-DEBUGGING" "DEBUG-LOG" "INT32-TO-STRING" + "WITH-CFSTRING" + "WITH-CFSTRINGS" + "CONST-CFSTRING" + "MAKE-CFSTRING" + "REQUIRE-NOERROR" + "SHOW-ALERT" + "MAKE-LISP-STRING-FROM-CFSTRINGREF" "NIB" "NIB-FILE-NAME" "NIB-RESOURCE-NAME")))
Index: CL-Carbon/utils.lisp diff -u CL-Carbon/utils.lisp:1.1.1.1 CL-Carbon/utils.lisp:1.2 --- CL-Carbon/utils.lisp:1.1.1.1 Fri Apr 29 22:19:03 2005 +++ CL-Carbon/utils.lisp Sat May 21 09:27:21 2005 @@ -8,7 +8,7 @@ ;;;; Programmer: David Steuber ;;;; Date Started: 1/21/2005 ;;;; -;;;; $Id: utils.lisp,v 1.1.1.1 2005/04/29 20:19:03 dsteuber Exp $ +;;;; $Id: utils.lisp,v 1.2 2005/05/21 07:27:21 dsteuber Exp $ ;;;; *********************************************************************** ;;;; ;;;; Copyright (c) 2005 by David Steuber @@ -36,37 +36,38 @@
(in-package :cl-carbon)
+(defun cf-string-make-constant-string (s) + (#___CFStringMakeConstantString s)) + (defmacro const-cfstring (str) (let ((s (gensym))) - `(ccl::with-cstr (,s ,str) (#___CFStringMakeConstantString ,s)))) -(export 'const-cfstring) + `(ccl::with-cstr (,s ,str) (cl-carbon::cf-string-make-constant-string ,s))))
(defun make-cfstring (str) "Allocates a CFString object stored in a MACPTR which must be CFRelease(d) when no longer needed." (ccl::with-cstr (cstr str) (#_CFStringCreateWithCString (ccl:%null-ptr) cstr #$kCFStringEncodingMacRoman))) -(export 'make-cfstring) + +(defun cf-release (cf-ptr) + (#_CFRelease cf-ptr))
(defmacro with-cfstring ((sym str) &rest body) "Create, use, and then release a CFString." `(let ((,sym (make-cfstring ,str))) (unwind-protect (progn ,@body) - (#_CFRelease ,sym)))) -(export 'with-cfstring) + (cl-carbon::cf-release ,sym))))
(defmacro with-cfstrings (speclist &body body) "Create, use, and then release CFStrings." (ccl::with-specs-aux 'with-cfstring speclist body)) -(export 'with-cfstrings)
(defmacro require-noerror (&body forms) (let* ((err (gensym)) (body (reverse `(let (,err))))) (dolist (form forms (nreverse body)) (push `(setf ,err ,form) body) - (push `(assert (eql ,err #$noErr)) body)))) -(export 'require-noerror) + (push `(assert (eql ,err #.#.(read-from-string "#$noErr"))) body))))
(defmacro case-equal (exp &body clauses) (let ((temp (gensym))) @@ -80,12 +81,10 @@ `((member ,temp ',keys :test #'equal) ,@clause-forms))))) clauses))))) -(export 'case-equal)
(defun show-alert (s) (ccl::with-pstr (message-str s) (#_StandardAlert #$kAlertNoteAlert message-str (%null-ptr) (%null-ptr) (%null-ptr)))) -(export 'show-alert)
(defun make-lisp-string-from-cfstringref (ptr &optional (encoding #$kCFStringEncodingMacRoman)) "Use the CFStringRef in ptr to make a Lisp string useing the provided encoding." @@ -95,4 +94,3 @@ (when (= 1 (#_CFStringGetCString ptr buffer 1024 encoding)) (ccl::%get-cstring buffer))) (ccl::%get-cstring (ccl::%get-ptr cstr))))) -(export 'make-lisp-string-from-cfstringref)