Function: idlwave-all-class-inherits
idlwave-all-class-inherits is a byte-compiled function defined in
idlwave.el.gz.
Signature
(idlwave-all-class-inherits CLASS)
Documentation
Return a list of all superclasses of CLASS (recursively expanded).
The list is cached in idlwave-class-info(var)/idlwave-class-info(fun) for faster access.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/idlwave.el.gz
(defun idlwave-all-class-inherits (class)
"Return a list of all superclasses of CLASS (recursively expanded).
The list is cached in `idlwave-class-info' for faster access."
(cond
((not idlwave-support-inheritance) nil)
((eq class nil) nil)
((eq class t) nil)
(t
(let ((info (idlwave-class-info class))
entry)
(if (setq entry (assq 'all-inherits info))
(cdr entry)
;; Save the depth of inheritance scan to check for circular references
(let ((inherits (mapcar (lambda (x) (cons x 0))
(idlwave-class-inherits class)))
rtn all-inherits cl)
(while inherits
(setq cl (pop inherits)
rtn (cons (car cl) rtn)
inherits (append (mapcar (lambda (x)
(cons x (1+ (cdr cl))))
(idlwave-class-inherits (car cl)))
inherits))
(if (> (cdr cl) 999)
(error
"Class scan: inheritance depth exceeded. Circular inheritance?")))
(setq all-inherits (nreverse rtn))
(nconc info (list (cons 'all-inherits all-inherits)))
all-inherits))))))