[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
find-all-subclasses
- To: HOHMANN@CSMIL.UMICH.EDU
- Subject: find-all-subclasses
- From: STEVE.M@AppleLink.Apple.COM (Carbon-based, S Mitchell,APD)
- Date: 07 Jul 92 02:12 GMT
- Cc: INFO-MCL@CAMBRIDGE.APPLE.COM
Subject: Re: Is there an example of a function that will
Luke:
> return ALL subclasses of a given class, not just the direct subclasses?
> I am looking for a recursive version of class-direct-subclasses that will
> return all the classes in a list, and I'm (for the moment) too lazy to
> write such a beast.....
(defun find-all-subclasses (class &aux so-far)
"recursively finds all the subclasses of class, without duplicates"
(when class
(let ((new-subclasses
(set-difference (class-direct-subclasses class) so-far)))
(setf so-far (append new-subclasses so-far))
(dolist (class new-subclasses)
(setf so-far (find-subclasses class so-far)))))
so-far)
;eg (find-all-subclasses (find-class 'stream))
_Steve