3 ;;;; Copyright (C) 2001 Free Software Foundation, Inc.
5 ;;;; This library is free software; you can redistribute it and/or
6 ;;;; modify it under the terms of the GNU Lesser General Public
7 ;;;; License as published by the Free Software Foundation; either
8 ;;;; version 2.1 of the License, or (at your option) any later version.
10 ;;;; This library is distributed in the hope that it will be useful,
11 ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 ;;;; Lesser General Public License for more details.
15 ;;;; You should have received a copy of the GNU Lesser General Public
16 ;;;; License along with this library; if not, write to the Free Software
17 ;;;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 (define-module (oop goops old-define-method)
22 :use-module (oop goops)
23 :export (define-method)
28 (procedure->memoizing-macro
30 (let ((name (cadr exp)))
32 (eq? (car name) 'setter)
36 (let ((name (cadr name)))
37 (cond ((not (symbol? name))
38 (goops-error "bad method name: ~S" name))
41 ;; *fixme* Temporary hack for the current module system
43 (define-accessor ,name))
44 (add-method! (setter ,name) (method ,@(cddr exp)))))
47 (define-accessor ,name)
48 (add-method! (setter ,name) (method ,@(cddr exp)))))))
49 (cond ((not (symbol? name))
50 (goops-error "bad method name: ~S" name))
53 ;; *fixme* Temporary hack for the current module system
55 (define-generic ,name))
56 (add-method! ,name (method ,@(cddr exp)))))
59 (define-generic ,name)
60 (add-method! ,name (method ,@(cddr exp)))))))))))