3 ;; JSCL is free software: you can redistribute it and/or
4 ;; modify it under the terms of the GNU General Public License as
5 ;; published by the Free Software Foundation, either version 3 of the
6 ;; License, or (at your option) any later version.
8 ;; JSCL is distributed in the hope that it will be useful, but
9 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
10 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 ;; General Public License for more details.
13 ;; You should have received a copy of the GNU General Public License
14 ;; along with JSCL. If not, see <http://www.gnu.org/licenses/>.
16 (define-setf-expander oget (object key &rest keys)
17 (let* ((keys (cons key keys))
19 (g!keys (mapcar (lambda (s)
24 (values `(,g!object ,@g!keys)
27 `(oset ,g!value ,g!object ,@g!keys)
28 `(oget ,g!object ,@g!keys))))
30 (define-setf-expander oget* (object key &rest keys)
31 (let* ((keys (cons key keys))
33 (g!keys (mapcar (lambda (s)
38 (values `(,g!object ,@g!keys)
41 `(oset* ,g!value ,g!object ,@g!keys)
42 `(oget* ,g!object ,@g!keys))))