r4278: Auto commit for Debian build
authorKevin M. Rosenberg <kevin@rosenberg.net>
Sat, 29 Mar 2003 07:09:41 +0000 (07:09 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Sat, 29 Mar 2003 07:09:41 +0000 (07:09 +0000)
mop.lisp

index 49dd87d50beadc3994b27f9921d4c97b64f0aa3e..f40287473d92d2e75fa272f407b3774e3216ecac 100644 (file)
--- a/mop.lisp
+++ b/mop.lisp
@@ -11,7 +11,7 @@
 ;;;; in Text, HTML, and XML formats. This includes hyperlinking
 ;;;; capability and sub-objects.
 ;;;;
-;;;; $Id: mop.lisp,v 1.20 2003/03/29 04:20:19 kevin Exp $
+;;;; $Id: mop.lisp,v 1.21 2003/03/29 07:09:41 kevin Exp $
 ;;;;
 ;;;; This file is Copyright (c) 2000-2002 by Kevin M. Rosenberg
 ;;;;
        (setf (slot-value ,the-instance ,the-slot-name)
           (,reader ,@keys)))))
 
-#+(or sbcl scl cmu)
-(defparameter *queued-definitions* nil)
+
+(defparameter *queued-definitions-pathname*
+  (make-pathname :directory '(:absolute "tmp")
+                :name (format nil "hyperobject-def-~d" (get-universal-time))
+                :type "lisp"))
+(defparameter *queued-definitions-stream* nil)
+
+(defun add-definition (def)
+  (unless *queued-definitions-stream*
+    (setq *queued-definitions-stream* (open *queued-definitions-pathname*
+                                           :direction :output
+                                           :if-exists :supersede)))
+  (format *queued-definitions-stream* "~A~%" def))
 
 (defun process-queued-definitions ()
-  #+(or sbcl scl cmu)
-  (progn
-    (dolist (def *queued-definitions*)
-      (eval def))
-    (setq *queued-definitions* nil)))
+  (when *queued-definitions-stream*
+    (close *queued-definitions-stream*)
+    (compile-file *queued-definitions-pathname*)
+    (load (compile-file-pathname *queued-definitions-pathname*))
+    (delete-file *queued-definitions-pathname*) 
+    (delete-file (compile-file-pathname *queued-definitions-pathname*))
+    (setq *queued-definitions-stream* nil)))
 
 (defun finalize-subobjects (cl)
   "Process class subobjects slot"
                                                           nil
                                                           (cdr subobj-def)))))
            (unless (eq (lookup subobject) t)
-             #+(or sbcl scl cmu)
-             (push `(def-lazy-reader ,(name-class subobject)
-                     ,(name-slot subobject) ,(lookup subobject)
-                     ,@(lookup-keys subobject))
-                   *queued-definitions*)             
-             #-(or sbcl scl cmu)
-             (eval `(def-lazy-reader ,(name-class subobject)
-                        ,(name-slot subobject) ,(lookup subobject)
-                        ,@(lookup-keys subobject))))
+             (add-definition
+              `(def-lazy-reader ,(name-class subobject)
+                ,(name-slot subobject) ,(lookup subobject)
+                ,@(lookup-keys subobject))))
            (push subobject subobjects))))
       subobjects)))