Function: ad-insert-argument-access-forms

ad-insert-argument-access-forms is a byte-compiled function defined in advice.el.gz.

Signature

(ad-insert-argument-access-forms DEFINITION ARGLIST)

Documentation

Expands arg-access text macros in DEFINITION according to ARGLIST.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/advice.el.gz
(defun ad-insert-argument-access-forms (definition arglist)
  "Expands arg-access text macros in DEFINITION according to ARGLIST."
  (ad-substitute-tree
   (lambda (form)
     (or (eq form 'ad-arg-bindings)
         (and (memq (car-safe form)
                    '(ad-get-arg ad-get-args ad-set-arg ad-set-args))
              (integerp (car-safe (cdr form))))))
   (lambda (form)
     (if (eq form 'ad-arg-bindings)
         (ad-retrieve-args-form arglist)
       (let ((accessor (car form))
             (index (car (cdr form)))
             (val (car (cdr (ad-insert-argument-access-forms
                             (cdr form) arglist)))))
         (cond ((eq accessor 'ad-get-arg)
                (ad-get-argument arglist index))
               ((eq accessor 'ad-set-arg)
                (ad-set-argument arglist index val))
               ((eq accessor 'ad-get-args)
                (ad-get-arguments arglist index))
               ((eq accessor 'ad-set-args)
                (ad-set-arguments arglist index val))))))
		   definition))