It lives!
[sod] / chimaera.sod
1 /* -*-sod-*-
2 *
3 * A simple SOD module for testing.
4 */
5
6 code c : includes {
7 #include <stdio.h>
8 #include "chimaera.h"
9 }
10
11 code h : includes {
12 #include "sod.h"
13 }
14
15 lisp (write-line "Hello, world!") ;
16
17 [nick = nml, link = SodObject]
18 class Animal : SodObject {
19 int tickles = 0;
20
21 void tickle(void) { }
22
23 [role = before]
24 void nml.tickle(void) { me->nml.tickles++; }
25 }
26
27 class Lion : Animal {
28 void bite(void) { puts("Munch!"); }
29 void nml.tickle(void) { me->_vt.bite(me); }
30 }
31
32 class Goat : Animal {
33 void butt(void) { puts("Bonk!"); }
34 void nml.tickle(void) { me->_vt.butt(me); }
35 }
36
37 class Serpent : Animal {
38 void hiss(void) { puts("Sssss!"); }
39 void bite(void) { puts("Nom!"); }
40 void nml.tickle(void) {
41 if (SERPENT__CONV_NML(me)->nml.tickles > 2)
42 me->_vt.bite();
43 else
44 me->_vt.hiss();
45 }
46 }
47
48 [nick = sir, link = Animal]
49 class Chimaera : Lion, Goat, Serpent {
50 }
51