Function: oclosure--build-class
oclosure--build-class is a byte-compiled function defined in
oclosure.el.gz.
Signature
(oclosure--build-class NAME DOCSTRING PARENT-NAMES SLOTS)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/oclosure.el.gz
(defun oclosure--build-class (name docstring parent-names slots)
(cl-assert (null (cdr parent-names)))
(let* ((parent-class (let ((name (or (car parent-names) 'oclosure)))
(or (cl--find-class name)
(error "Unknown class: %S" name))))
(slotdescs
(append
(oclosure--class-slots parent-class)
(mapcar (lambda (field)
(if (not (consp field))
(cl--make-slot-descriptor field nil nil
'((:read-only . t)))
(let ((name (pop field))
(type nil)
(read-only t)
(props '()))
(while field
(pcase (pop field)
(:mutable (setq read-only (not (car field))))
(:type (setq type (car field)))
(p (message "Unknown property: %S" p)
(push (cons p (car field)) props)))
(setq field (cdr field)))
(cl--make-slot-descriptor name nil type
`((:read-only . ,read-only)
,@props)))))
slots))))
(oclosure--class-make name docstring slotdescs
(if (cdr parent-names)
(oclosure--class-parents parent-class)
(list parent-class))
(cons name (oclosure--class-allparents
parent-class)))))