(defun build-indexes (book)
(loop
for section in (contents book)
do (loop
for part in section
when (code-part-p part)
do (when (descriptor part)
(symbol-macrolet ((index-table
(gethash (class-of (descriptor part)) (indexes book))))
(unless index-table
(setf index-table (make-hash-table :test 'eql)))
(setf (gethash (name (descriptor part)) index-table) part)))))
book)
Source Context