+(declaim (inline delistify))
+(defun delistify (list)
+ "Some MOPs, like openmcl 0.14.2, cons attribute values in a list."
+ (if (listp list)
+ (car list)
+ list))
+
+(declaim (inline delistify-dsd))
+(defun delistify-dsd (list)
+ "Some MOPs, like openmcl 0.14.2, cons attribute values in a list."
+ (if (and (listp list) (null (cdr list)))
+ (car list)
+ list))
+
+(defmethod initialize-instance :around ((obj view-class-direct-slot-definition)
+ &rest initargs)
+ (do* ((saved-initargs initargs)
+ (parsed (list obj))
+ (name (first initargs) (first initargs))
+ (val (second initargs) (second initargs))
+ (type nil)
+ (db-constraints nil))
+ ((null initargs)
+ (setq parsed
+ (append parsed
+ (list 'specified-type type
+ :type (compute-lisp-type-from-specified-type
+ type db-constraints))))
+ (apply #'call-next-method parsed))
+ (case name
+ (:db-constraints
+ (setq db-constraints val)
+ (setq parsed (append parsed (list name val))))
+ (:type
+ (setq type val))
+ (t
+ (setq parsed (append parsed (list name val)))))
+ (setq initargs (cddr initargs))))
+