src/foo.sod: Split `Second' off into its own separate chain.
[sod] / test / chimaera.sod
CommitLineData
a07d8d00
MW
1/* -*-sod-*-
2 *
3 * A simple SOD module for testing.
4 */
5
6code c : includes {
7#include <stdio.h>
8#include "chimaera.h"
9}
10
11code h : includes {
12#include "sod.h"
13}
14
a07d8d00
MW
15[nick = nml, link = SodObject]
16class Animal : SodObject {
17 int tickles = 0;
18
19 void tickle(void) { }
20
21 [role = before]
22 void nml.tickle(void) { me->nml.tickles++; }
23}
24
25class Lion : Animal {
26 void bite(void) { puts("Munch!"); }
dea4d055 27 void nml.tickle(void) { me->_vt.lion.bite(me); }
a07d8d00
MW
28}
29
30class Goat : Animal {
31 void butt(void) { puts("Bonk!"); }
dea4d055 32 void nml.tickle(void) { me->_vt.goat.butt(me); }
a07d8d00
MW
33}
34
35class Serpent : Animal {
36 void hiss(void) { puts("Sssss!"); }
37 void bite(void) { puts("Nom!"); }
38 void nml.tickle(void) {
39 if (SERPENT__CONV_NML(me)->nml.tickles > 2)
dea4d055 40 me->_vt.serpent.bite();
a07d8d00 41 else
dea4d055 42 me->_vt.serpent.hiss();
a07d8d00
MW
43 }
44}
45
46[nick = sir, link = Animal]
47class Chimaera : Lion, Goat, Serpent {
48}
49