source: trunk/playground/call-next-method_multiple-inheritance.lisp

Last change on this file was 328, checked in by lgiessmann, 14 years ago

fixed ticket #75 --> changed license terms from LGPL to LLGPL in the trunk tree

File size: 1.5 KB
Line 
1;;+-----------------------------------------------------------------------------
2;;+  Isidorus
3;;+  (c) 2008-2010 Marc Kuester, Christoph Ludwig, Lukas Georgieff
4;;+
5;;+  Isidorus is freely distributable under the LLGPL license.
6;;+  You can find a detailed description in trunk/docs/LLGPL-LICENSE.txt and
7;;+  trunk/docs/LGPL-LICENSE.txt.
8;;+-----------------------------------------------------------------------------
9
10
11(defclass CharacteristicC()
12           ((value :accessor value
13                   :initarg :value
14                   :type string)))
15
16(defclass DatatypableC()
17           ((datatype :accessor datatype
18                      :initarg :datatype
19                      :type string)))
20
21(defclass OccurrenceC (CharacteristicC DatatypableC)
22           ())
23
24(defgeneric equivalent-construct (construct &rest args))
25
26(defmethod equivalent-construct ((construct OccurrenceC) &rest args)
27           (format t "equivalent-construct --> OccurrenceC: ~a~%" args)
28           (call-next-method construct args))
29
30(defmethod equivalent-construct ((construct CharacteristicC) &rest args)
31           (format t "equivalent-construct --> CharacteristicC: ~a~%" args)
32           (call-next-method construct (first args))
33           (string= (value construct) (getf (first args) :value)))
34
35(defmethod equivalent-construct ((construct DatatypableC) &rest args)
36           (format t "equivalent-construct --> DatatypableC: ~a~%" args)
37           (string= (datatype construct) (getf (first args) :datatype)))
38
39(defvar *occ* (make-instance 'Occurrencec :value "value" :datatype "datatype"))
40
41(equivalent-construct *occ* :value "value" :datatype "datatype")
Note: See TracBrowser for help on using the repository browser.