Function: cl-struct-slot-value--inliner

cl-struct-slot-value--inliner is a function defined in cl-macs.el.gz.

Signature

(cl-struct-slot-value--inliner INLINE--FORM STRUCT-TYPE SLOT-NAME INST)

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/cl-macs.el.gz
;; Could not find source code, showing raw function object.
#[(inline--form struct-type slot-name inst)
  ((ignore inline--form)
   (catch 'inline--just-use
     (let*
	 ((exp struct-type)
	  (struct-type
	   (if (macroexp-copyable-p exp) exp
	     (make-symbol "struct-type")))
	  (body
	   (let*
	       ((exp slot-name)
		(slot-name
		 (if (macroexp-copyable-p exp) exp
		   (make-symbol "slot-name")))
		(body
		 (let*
		     ((exp inst)
		      (inst
		       (if (macroexp-copyable-p exp) exp
			 (make-symbol "inst")))
		      (body
		       (list 'progn
			     (list 'unless
				   (list 'cl-typep inst struct-type)
				   (list 'signal
					 (list 'quote
					       'wrong-type-argument)
					 (list 'list struct-type inst)))
			     (list 'if
				   (list 'eq
					 (list
					  'cl-struct-sequence-type
					  struct-type)
					 (list 'quote 'list))
				   (list 'nth
					 (list 'cl-struct-slot-offset
					       struct-type slot-name)
					 inst)
				   (list 'aref inst
					 (list 'cl-struct-slot-offset
					       struct-type slot-name))))))
		   (if (eq inst exp) body
		     (macroexp-let* (list (list inst exp)) body)))))
	     (if (eq slot-name exp) body
	       (macroexp-let* (list (list slot-name exp)) body)))))
       (if (eq struct-type exp) body
	 (macroexp-let* (list (list struct-type exp)) body)))))
  (t)]