Changeset 4155


Ignore:
Timestamp:
10/01/03 01:27:56 (19 years ago)
Author:
piso
Message:

*setf-expander* => 'setf-inverse

Location:
trunk/j/src/org/armedbear/lisp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/defstruct.lisp

    r4142 r4155  
    22;;;
    33;;; Copyright (C) 2003 Peter Graves
    4 ;;; $Id: defstruct.lisp,v 1.22 2003-09-30 09:57:33 piso Exp $
     4;;; $Id: defstruct.lisp,v 1.23 2003-10-01 01:27:56 piso Exp $
    55;;;
    66;;; This program is free software; you can redistribute it and/or
     
    6868        (setf-expander (gensym)))
    6969    `((setf (symbol-function ',accessor) (get-slot-accessor ,index))
    70       (%put ',accessor *setf-expander* (get-slot-mutator ,index)))))
     70      (%put ',accessor 'setf-inverse (get-slot-mutator ,index)))))
    7171
    7272(defun define-access-functions (slots)
  • trunk/j/src/org/armedbear/lisp/setf.lisp

    r4065 r4155  
    22;;;
    33;;; Copyright (C) 2003 Peter Graves
    4 ;;; $Id: setf.lisp,v 1.26 2003-09-26 00:44:30 piso Exp $
     4;;; $Id: setf.lisp,v 1.27 2003-10-01 01:27:20 piso Exp $
    55;;;
    66;;; This program is free software; you can redistribute it and/or
     
    1919
    2020(in-package "SYSTEM")
    21 
    22 (defconstant *setf-expander* (make-symbol "SETF-EXPANDER"))
    2321
    2422(defun get-setf-expansion (form &optional environment)
     
    2725           (values nil nil (list new-var)
    2826                   `(setq ,form ,new-var) form)))
    29   ((get (car form) *setf-expander*)
     27  ((get (car form) 'setf-inverse)
    3028   (let ((vars (mapcar #'(lambda (x) (gensym)) (cdr form)))
    3129         (store (gensym)))
     
    3331                   (cdr form)
    3432                   (list store)
    35                    `(,(get (car form) *setf-expander*)
     33                   `(,(get (car form) 'setf-inverse)
    3634                      ,@vars ,store)
    3735       (cons (car form) vars))))
     
    7674          (when (macro-function (car place))
    7775            (setq place (macroexpand place)))
    78           (let ((expander (get (car place) *setf-expander*)))
    79             (cond ((null expander)
     76          (let ((inverse (get (car place) 'setf-inverse)))
     77            (cond ((null inverse)
    8078                   (error "no SETF expansion for ~A" place))
    81                   ((symbolp expander)
    82                    `(,expander ,@(cdr place) ,value))
    83                   ((functionp expander)
    84                    `(funcall ,expander ,@(cdr place) ,value))
     79                  ((symbolp inverse)
     80                   `(,inverse ,@(cdr place) ,value))
     81                  ((functionp inverse)
     82                   `(funcall ,inverse ,@(cdr place) ,value))
    8583                  (t
    8684                   (error "SETF: unhandled case")))))
     
    103101         (symbol-function name))
    104102        ((and (consp name) (eq (car name) 'setf))
    105          (or (get *setf-expander* (cadr name)) (error 'undefined-function)))
     103         (or (get 'setf-inverse (cadr name)) (error 'undefined-function)))
    106104        (t (error 'type-error))))
    107105
     
    110108         (fset name function))
    111109        ((and (consp name) (eq (car name) 'setf))
    112          (%put (cadr name) *setf-expander* function))
     110         (%put (cadr name) 'setf-inverse function))
    113111        (t (error 'type-error))))
    114112
     
    129127
    130128(defmacro defsetf (access-function update-function)
    131   `(%put ',access-function *setf-expander* ',update-function))
     129  `(%put ',access-function 'setf-inverse ',update-function))
    132130
    133131(defun %set-caar (x v) (%rplaca (car x) v))
Note: See TracChangeset for help on using the changeset viewer.