Generic Function
lispworks
get-inspector-values object mode
The object to be inspected.
Name of a mode, ornil.nil defines the default inspection format for object.
nil is the default mode, which is always present (it can be overwritten). (get-inspector-values (object nil)) (get-inspector-values (standard-object nil)) (get-inspector-values (structured-object nil)) (get-inspector-values (sequence nil)) (get-inspector-values cons nil))
(defmethod lispworks:get-inspector-values
((object standard-object)
(mode (eql 'direct-as)))
(declare (ignore mode))
(loop with object-class =
(class-of object)
with precedence-list =
(class-precedence-list object-class)
with items =
(loop for super in precedence-list
collecting (list*
(format nil "~a"
(class-name super))
super))
with class =
(or (capi:prompt-with-list items
"Direct slots as ...")
object-class)
;; default if no selection
with slots =
(class-direct-slots class)
for slot in slots
for name =
(clos::slot-definition-name slot)
collect name into names
collect (if (slot-boundp object name)
(slot-value object name)
:slot-unbound)
into values
finally
(return
(values
names
values
nil
#'(lambda
(x slot-name index new-value)
(declare (ignore index))
(setf (slot-value x slot-name)
new-value))
(format nil "~a - direct slots as ~a"
(class-name object-class)
(class-name class))))))