/* -*-sod-*- * * A simple SOD module for testing. */ code c : includes { #include #include "chimaera.h" } code h : includes { #include "sod.h" } [nick = nml, link = SodObject] class Animal : SodObject { int tickles = 0; void tickle(void) { } [role = before] void nml.tickle(void) { me->nml.tickles++; } } class Lion : Animal { void bite(void) { puts("Munch!"); } void nml.tickle(void) { me->_vt.lion.bite(me); } } class Goat : Animal { void butt(void) { puts("Bonk!"); } void nml.tickle(void) { me->_vt.goat.butt(me); } } class Serpent : Animal { void hiss(void) { puts("Sssss!"); } void bite(void) { puts("Nom!"); } void nml.tickle(void) { if (SERPENT__CONV_NML(me)->nml.tickles > 2) me->_vt.serpent.bite(); else me->_vt.serpent.hiss(); } } [nick = sir, link = Animal] class Chimaera : Lion, Goat, Serpent { }