r4632: Auto commit for Debian build
[hyperobject.git] / mop.lisp
index 26fba01e04d3aaa61ab0ab4f5929bfc8d86bf1aa..9925c0f99fcd704acd874b26cc6c1685a5d34fcb 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.59 2003/04/16 20:50:00 kevin Exp $
+;;;; $Id: mop.lisp,v 1.63 2003/04/25 05:00:58 kevin Exp $
 ;;;;
 ;;;; This file is Copyright (c) 2000-2002 by Kevin M. Rosenberg
 ;;;;
 
 (defclass hyperlink ()
   ((name :type symbol :initform nil :initarg :name :reader name)
-   (lookup :type (or function symbol) :initform nil :initarg :lookup :reader lookup)
+   (lookup
+    ;; The type specifier seems to break sbcl
+    ;; :type (or function symbol)
+    :type t
+    :initform nil :initarg :lookup :reader lookup)
    (link-parameters :type list :initform nil :initarg :link-parameters
                    :reader link-parameters)))
 
            value-type
            (car value-type))
     ((:string :cdata :varchar :char)
-     'string)
+     '(or null string))
     (:character
-     'character)
+     '(or null character))
     (:fixnum
-     'fixnum)
+     '(or null fixnum))
     (:boolean
-     'boolean)
+     '(or null boolean))
     (:integer
-     'integer)
+     '(or null integer))
     ((:float :single-float)
-     'single-float)
+     '(or null single-float))
     (:double-float
-     'double-float)
+     '(or null double-float))
     (otherwise
      t)))
 
     `(defmethod slot-unbound (,the-class (,the-instance ,class)
                              (,the-slot-name (eql ',slot-name)))
       (declare (ignore ,the-class))
-      (let ((v (,reader ,@keys)))
-       v
-       #+ignore
-       (setf (slot-value ,the-instance ,the-slot-name) v)))))
+      (setf (slot-value ,the-instance ,the-slot-name) (,reader ,@keys)))))
 
 
 #+lispworks
                                                                       nil
                                                                       (cdr subobj-def)))))
                        (unless (eq (lookup subobject) t)
-                         #-(or sbcl lispworks)
+                         #-(or sbcl cmu lispworks)
                          (eval
                           `(hyperobject::def-lazy-reader ,(name-class subobject)
                             ,(name-slot subobject) ,(lookup subobject)
                             ,@(lookup-keys subobject)))
-                         #+(or sbcl lispworks)
+                         #+(or sbcl cmu lispworks)
                          (apply #'ensure-lazy-reader 
                                 (name-class subobject) (name-slot subobject) (lookup subobject) (lookup-keys subobject))
                          )