;;;; in Text, HTML, and XML formats. This includes hyperlinking
;;;; capability and sub-objects.
;;;;
-;;;; $Id: mop.lisp,v 1.50 2003/04/14 17:36:12 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 function :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)))
(t
t)))
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (when (>= (length (generic-function-lambda-list
+ (ensure-generic-function
+ 'compute-effective-slot-definition)))
+ 3)
+ (push :ho-named-cesd-fun cl:*features*)))
+
(defmethod compute-effective-slot-definition :around ((cl hyperobject-class)
- #-(or cmu scl) name
+ #+ho-named-cesd-fun name
dsds)
#+allegro (declare (ignore name))
(let* ((dsd (car dsds))
:value-constraint (slot-value dsd 'value-constraint)
:null-allowed (slot-value dsd 'null-allowed)
ia)))))
-
+
+
+#+ho-named-cesd-fun
+(setq cl:*features* (delete :ho-named-cesd-fun cl:*features*))
+
(defun value-type-to-lisp-type (value-type)
(case (if (atom value-type)
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))
- (setf (slot-value ,the-instance ,the-slot-name)
- (,reader ,@keys)))))
+ (setf (slot-value ,the-instance ,the-slot-name) (,reader ,@keys)))))
+
#+lispworks
(defun intern-eql-specializer (slot)