[Openmcl-devel] OpenMCL MOP Reports

Kevin Rosenberg kevin at rosenberg.net
Tue Jun 24 18:21:32 PDT 2003


Gary Byers wrote:
> The fix is in CVS (and asdf compiles and loads with the fix in place.)
> Thanks.

Wow, fast fix!

I've attached a test file which illustrates a few things with the MOP.

The first is fairly simple. The signatures of
direct-slot-definition-class and effective-slot-definition-class does
not match the signature in AMOP. Similarly, the signature in
compute-effect-slot-defintion also does not match AMOP.

The less trivial issue is that the (defclass a ...) reports:
Illegal option :ATTRIBUTES

Thanks for adding the MOP to OpenMCL!

-- 
Kevin Rosenberg
kevin at rosenberg.net


-------------- next part --------------
;; Works fine on allegro 6.2, cmucl 18e+, sbcl 0.8.0

(defpackage #:tmop
  (:use #:cl
	#+openmcl #:openmcl-mop
	#+sbcl #:sb-mop
	#+cmu #:mop
	#+allegro #:mop))
(in-package #:tmop)

(defclass attributes-dsd (standard-direct-slot-definition)
  ((attributes :initarg :attributes :initform nil
	       :accessor dsd-attributes)))

(defclass attributes-esd (standard-effective-slot-definition)
  ((attributes :initarg :attributes :initform nil 
	       :accessor esd-attributes)))

(defclass tclass (standard-class)
  ())

#+(or cmu scl sbcl)
(defmethod validate-superclass ((class tclass)
				(superclass standard-class))
  t)


(defmethod direct-slot-definition-class ((cl tclass) #-openmcl &rest initargs)
  (declare (ignore initargs))
  (find-class 'attributes-dsd))

(defmethod effective-slot-definition-class ((cl tclass) #-openmcl &rest initargs)
  (declare (ignore initargs))
  (find-class 'attributes-esd))

(defmethod compute-effective-slot-definition :around ((cl tclass) #-openmcl name
						      dsds)
  (declare (ignore name))
  (let ((esd (call-next-method)))
    (setf (esd-attributes esd) (dsd-attributes (car dsds)))
    esd))

(defclass a ()
  ((a)
   (b :attributes t))
  (:metaclass tclass))

(defparameter *a* (make-instance 'a))

(dolist (s (class-slots (class-of *a*)))
  (format t "~&slot ~A attributes: ~A~%" (slot-definition-name s)
	  (esd-attributes s)))




-------------- next part --------------
_______________________________________________
Openmcl-devel mailing list
Openmcl-devel at clozure.com
http://clozure.com/cgi-bin/mailman/listinfo/openmcl-devel


More information about the Openmcl-devel mailing list