Slots are stored on the property list of a symbol as an alist of facets, e.g. ((value 4)) .
(defun getslot (frame slot-name) (getslotb frame frame slot-name)) (defun getslotb (orig-frame frame slot-name) (let (slot if-needed) (if (setq slot (get frame slot-name)) (or (cadr (assoc 'value slot)) (if (setq if-needed (assoc 'if-needed slot)) (funcall (cadr if-needed) orig-frame))) (some #'(lambda (super) (getslotb orig-frame super slot-name)) (get frame 'supers)))))
A stored value is used if available; else an if-needed method is called if available; else an attempt is made to get the value from one of the supers.
Contents    Page-10    Prev    Next    Page+10    Index