home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / LISP / PDLISP.ZIP / DEFSETF.L < prev    next >
Encoding:
Text File  |  1980-01-04  |  1005 b   |  32 lines

  1. ;;; setf.x - copyright(c) 1986 by David Morein
  2. ;;; this file contains experimental code related
  3. ;;; to SETF and DEFSETF.
  4. ;;;
  5. (pdq /sys/cmd)
  6. ;;;
  7. ;;; DEFSETF - simplified define-setf-method
  8. ;;;
  9. (defmacro defsetf (access-fn &rest body)
  10.     (if (consp (car body))
  11.       `(complex-defsetf ,access-fn ,(car body) ,(cadr body) ,(cddr body))
  12.       `(simple-defsetf ,access-fn ,(car body))))
  13. ;;;
  14. ;;; SIMPLE-DEFSETF - handles defsetf of the form (defsetf access-fn update-fn)
  15. ;;;
  16. (defmacro simple-defsetf (access-fn update-fn)
  17.     `(define-setf-method
  18.         ,access-fn
  19.         ,(setq lambda-list (construct-lambda-list access-fn))
  20.         ,(setq temporaries (construct-temporaries-generator access-fn))
  21.         ,(setq value-forms (construct-value-forms access-fn))
  22.         ,(setq store-vars  (construct-store-vars-generator access-fn))
  23.         ,(setq store-form 
  24.             (construct-store-form-generator
  25.              access-fn
  26.              temporaries
  27.              store-vars))
  28.         ,(construct-accessing-form access-fn)))
  29. ;;;
  30. (popd)    ;return to original directory
  31.  
  32.