-;; Utilities
-
-(defun portable-class-of (obj)
- #-(or cmu sbcl) (class-of obj)
- #+sbcl (sb-pcl:class-of obj)
- #+cmu (pcl:class-of obj))
-
-(defun portable-class-name (obj)
- #-(or cmu sbcl) (class-name obj)
- #+sbcl (sb-pcl:class-name obj)
- #+cmu (pcl:class-name obj))
+(shadowing-import
+ #+allegro
+ `(mop::class-slots mop::slot-definition-name mop:finalize-inheritance
+ mop::standard-direct-slot-definition mop::standard-effective-slot-definition
+ mop:direct-slot-definition-class mop:compute-effective-slot-definition
+ excl::compute-effective-slot-definition-initargs)
+ #+lispworks
+ `(clos:class-slots clos::slot-definition-name clos:finalize-inheritance
+ clos::standard-direct-slot-definition clos::standard-effective-slot-definition
+ clos:direct-slot-definition-class clos:compute-effective-slot-definition
+ clos::compute-effective-slot-definition-initargs)
+ #+sbcl
+ `(sb-pcl:class-of sb-pcl:class-name sb-pcl:class-slots 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:compute-effective-slot-definition
+ sb-pcl::compute-effective-slot-definition-initargs)
+#+(or cmu scl)
+`(pcl:class-of pcl:class-name pcl:class-slots 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:compute-effective-slot-definition
+ pcl::compute-effective-slot-definition-initargs)
+ :hyperobject)
+
+;; Slot definitions
+
+
+(defclass hyperobject-dsd (standard-direct-slot-definition)
+ ((ho-type :initarg :ho-type :initform nil)
+ (print-formatter :initarg :print-formatter :initform nil)
+ (subobject :initarg :subobject :initform nil)
+ (reference :initarg :reference :initform nil)
+ (description :initarg :reference :initform nil)
+ ))
+
+(defclass hyperobject-esd (standard-effective-slot-definition)
+ ((ho-type :initarg :ho-type :initform nil :accessor esd-ho-type)
+ (print-formatter :initarg :print-formatter :initform nil :accessor esd-print-formatter)
+ (subobject :initarg :subobject :initform nil :accessor esd-subobject)
+ (reference :initarg :reference :initform nil :accessor esd-reference)
+ (description :initarg :reference :initform nil :accessor esd-description)
+ ))