+ (defmacro process-class-option (metaclass slot-name &optional required)
+ #+lispworks
+ `(defmethod clos:process-a-class-option ((class ,metaclass)
+ (name (eql ,slot-name))
+ value)
+ (when (and ,required (null value))
+ (error "metaclass ~A class slot ~A must have a value" (quote ,metaclass) name))
+ (list name `',value))
+ #+(or allegro sbcl cmu scl)
+ (declare (ignore metaclass slot-name required))
+ )
+
+ (defmacro process-slot-option (metaclass slot-name)
+ #+lispworks
+ `(defmethod clos:process-a-slot-option ((class ,metaclass)
+ (option (eql ,slot-name))
+ value
+ already-processed-options
+ slot)
+ (list* option `',value already-processed-options))
+ #-lispworks
+ (declare (ignore metaclass slot-name))
+ )
+
+
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (shadowing-import
+ #+allegro
+ '(excl::compute-effective-slot-definition-initargs)
+ #+lispworks
+ '(clos::compute-effective-slot-definition-initargs)
+ #+sbcl
+ '(#+kmr-sbcl-mop class-of #-kmr-sbcl-mop sb-pcl:class-of
+ #+kmr-sbcl-mop class-name #-kmr-sbcl-mop sb-pcl:class-name
+ #+kmr-sbcl-mop class-slots #-kmr-sbcl-mop sb-pcl:class-slots
+ #+kmr-sbcl-mop find-class #-kmr-sbcl-mop sb-pcl:find-class
+ sb-pcl::standard-class
+ sb-pcl:slot-definition-name sb-pcl::finalize-inheritance
+ sb-pcl::standard-direct-slot-definition
+ sb-pcl::standard-effective-slot-definition sb-pcl::validate-superclass
+ sb-pcl::direct-slot-definition-class
+ sb-pcl::effective-slot-definition-class
+ sb-pcl::compute-effective-slot-definition
+ sb-pcl:class-direct-slots
+ sb-pcl::compute-effective-slot-definition-initargs
+ sb-pcl::slot-value-using-class
+ sb-pcl:class-prototype sb-pcl:generic-function-method-class sb-pcl:intern-eql-specializer
+ sb-pcl:make-method-lambda sb-pcl:generic-function-lambda-list
+ sb-pcl::compute-slots)
+ #+cmu
+ '(pcl:class-of pcl:class-name pcl:class-slots pcl:find-class pcl::standard-class
+ pcl::slot-definition-name pcl:finalize-inheritance
+ pcl::standard-direct-slot-definition pcl::standard-effective-slot-definition
+ pcl::validate-superclass pcl:direct-slot-definition-class pcl::effective-slot-definition-class
+ pcl:compute-effective-slot-definition
+ pcl:class-direct-slots
+ pcl::compute-effective-slot-definition-initargs
+ pcl::slot-value-using-class
+ pcl:class-prototype pcl:generic-function-method-class pcl:intern-eql-specializer
+ pcl:make-method-lambda pcl:generic-function-lambda-list
+ pcl::compute-slots)
+ #+scl
+ '(class-of class-name class-slots find-class clos::standard-class
+ clos::slot-definition-name clos:finalize-inheritance
+ clos::standard-direct-slot-definition clos::standard-effective-slot-definition
+ clos::effective-slot-definition-class
+ clos:class-direct-slots
+ clos::validate-superclass clos:direct-slot-definition-class
+ clos:compute-effective-slot-definition
+ clos::compute-effective-slot-definition-initargs
+ clos::slot-value-using-class
+ clos::class-prototype clos:generic-function-method-class clos:intern-eql-specializer
+ clos:make-method-lambda clos:generic-function-lambda-list
+ clos::compute-slots
+ ;; note: make-method-lambda is not fbound
+ )))
+