1 (set-dispatch-macro-character #\# #\{ 'c-fragment-reader)
6 (define-sod-class "Animal" ("SodObject")
10 (instance-initializer "nml" "tickles" :single #{ 0 })
11 (message "tickle" (fun void))
12 (method "nml" "tickle" (fun void) #{
16 (method "nml" "tickle" (fun void) #{ }))
18 (define-sod-class "Lion" ("Animal")
21 (message "bite" (fun void))
22 (method "lion" "bite" (fun void) nil)
23 (method "nml" "tickle" (fun void) #{
24 me->_vt->lion.bite(me);
28 (define-sod-class "Goat" ("Animal")
30 (message "butt" (fun void))
31 (method "goat" "butt" (fun void) nil)
32 (method "nml" "tickle" (fun void) #{
33 me->_vt->goat.bite(me);
37 (define-sod-class "Serpent" ("Animal")
39 (message "bite" (fun void))
40 (method "serpent" "bite" (fun void) nil)
41 (message "hiss" (fun void))
42 (method "serpent" "hiss" (fun void) nil)
43 (method "nml" "tickle" (fun void) #{
44 if (me->tickles < 3) me->_vt->hiss(me);
45 else me->_vt->bite(me);
49 (define-sod-class "Chimaera" ("Lion" "Goat" "Serpent")
53 (defparameter *chimaera* (find-sod-class "Chimaera"))
54 (defparameter *emeth* (find "tickle"
55 (sod-class-effective-methods *chimaera*)
58 (effective-method-message method)))