-(defmacro do-attributes ((var occurence attributes) &body body)
- (with-unique-names (att plist type)
- `(loop for ,att in ,attributes
- do (let* ((,att (ensure-list ,att))
- (,plist (rest ,att))
- (,type (getf ,plist :type))
- (,var (if ,type
- (make-attribute :name (first ,att) :type ,type :plist ,plist)
- (find-attribute ,occurence (first ,att)))))
- (flet ((display-attribute* (component object)
- (display-using-description
- ,var
- component
- object
- (rest ,att))))
- (with-plist ((plist-union (rest ,att) (find-plist ,var)) ,var)
- ,@body))))))
+(define-layered-method find-display-type (object)
+ 'viewer)
+
+(define-layered-function find-display-layers (object))