1 (set-dispatch-macro-character #\# #\{ 'c-fragment-reader)
3 (defparameter *chimaera-module*
4 (define-module ("chimaera.sod")
6 (define-fragment (:c :includes) #{
10 (define-fragment (:h :includes) #{
14 (define-sod-class "Animal" ("SodObject")
18 (instance-initializer "nml" "tickles" :single #{ 0 })
19 (message "tickle" (fun void))
20 (method "nml" "tickle" (fun void) #{
24 (method "nml" "tickle" (fun void) #{ }))
26 (define-sod-class "Lion" ("Animal")
29 (message "bite" (fun void))
30 (method "lion" "bite" (fun void) #{
33 (method "nml" "tickle" (fun void) #{
34 me->_vt->lion.bite(me);
38 (define-sod-class "Goat" ("Animal")
40 (message "butt" (fun void))
41 (method "goat" "butt" (fun void) #{
44 (method "nml" "tickle" (fun void) #{
45 me->_vt->goat.bite(me);
49 (define-sod-class "Serpent" ("Animal")
51 (message "bite" (fun void))
52 (method "serpent" "bite" (fun void) #{
55 (message "hiss" (fun void))
56 (method "serpent" "hiss" (fun void) #{
59 (method "nml" "tickle" (fun void) #{
60 if (me->tickles < 3) me->_vt->hiss(me);
61 else me->_vt->bite(me);
65 (define-sod-class "Chimaera" ("Lion" "Goat" "Serpent")
69 (defparameter *chimaera* (find-sod-class "Chimaera"))
70 (defparameter *emeth* (find "tickle"
71 (sod-class-effective-methods *chimaera*)
74 (effective-method-message method)))