Function: oclosure--define
oclosure--define is a byte-compiled function defined in
oclosure.el.gz.
Signature
(oclosure--define NAME DOCSTRING PARENT-NAMES SLOTS &rest PROPS)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/oclosure.el.gz
;;;###autoload
(defun oclosure--define (name docstring parent-names slots
&rest props)
(let* ((class (oclosure--build-class name docstring parent-names slots))
(pred (lambda (oclosure)
(let ((type (oclosure-type oclosure)))
(when type
(memq name (oclosure--class-allparents
(cl--find-class type)))))))
(predname (or (plist-get props :predicate)
(intern (format "%s--internal-p" name)))))
(setf (cl--find-class name) class)
(dolist (slot (oclosure--class-slots class))
(put (cl--slot-descriptor-name slot) 'slot-name t))
(defalias predname pred)
(put name 'cl-deftype-satisfies predname)))