1 (set-dispatch-macro-character #\# #\{ 'c-fragment-reader)
3 (defparameter *chimaera-module*
4 (define-module ("chimaera.sod")
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) #{
25 (method "nml" "tickle" (fun void) #{
26 me->_vt->lion.bite(me);
30 (define-sod-class "Goat" ("Animal")
32 (message "butt" (fun void))
33 (method "goat" "butt" (fun void) #{
36 (method "nml" "tickle" (fun void) #{
37 me->_vt->goat.bite(me);
41 (define-sod-class "Serpent" ("Animal")
43 (message "bite" (fun void))
44 (method "serpent" "bite" (fun void) #{
47 (message "hiss" (fun void))
48 (method "serpent" "hiss" (fun void) #{
51 (method "nml" "tickle" (fun void) #{
52 if (me->tickles < 3) me->_vt->hiss(me);
53 else me->_vt->bite(me);
57 (define-sod-class "Chimaera" ("Lion" "Goat" "Serpent")
61 (defparameter *chimaera* (find-sod-class "Chimaera"))
62 (defparameter *emeth* (find "tickle"
63 (sod-class-effective-methods *chimaera*)
66 (effective-method-message method)))