blob: 711890ff1123947adf4222a88604555579f2cda4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
(in-package :cl-user)
(defun class-in-cl-package (class)
(eql (symbol-package (class-name class)) (find-package 'cl)))
(defun class-has-no-standard-subclasses (class)
(notany #'class-in-cl-package (sb-mop:class-direct-subclasses class)))
(let ((queue nil)
(set nil))
(do-external-symbols (sym 'cl)
(let ((class (find-class sym nil)))
(when class
(push class queue))))
(loop
while queue
do (let ((class (pop queue)))
(cond
((class-has-no-standard-subclasses class)
(push class set)))))
(flet ((name (class)
(symbol-name (class-name class))))
(setf set (stable-sort set #'string-lessp :key #'name))
(setf set (remove-duplicates set :key #'class-name)))
(loop
for class in set
do (format t "~a~%" class)))
|