~mdw
/
sod
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
debian/*.install: Distribute manpages with appropriate packages.
[sod]
/
test
/
chimaera.sod
diff --git
a/test/chimaera.sod
b/test/chimaera.sod
index
d748bb5
..
193d5ec
100644
(file)
--- a/
test/chimaera.sod
+++ b/
test/chimaera.sod
@@
-25,20
+25,20
@@
class Animal : SodObject {
class Lion : Animal {
void bite() { puts("Munch!"); }
class Lion : Animal {
void bite() { puts("Munch!"); }
- void nml.tickle() {
me->_vt->lion.
bite(me); }
+ void nml.tickle() {
Lion_
bite(me); }
}
class Goat : Animal {
void butt() { puts("Bonk!"); }
}
class Goat : Animal {
void butt() { puts("Bonk!"); }
- void nml.tickle() {
me->_vt->goat.
butt(me); }
+ void nml.tickle() {
Goat_
butt(me); }
}
class Serpent : Animal {
void hiss() { puts("Sssss!"); }
void bite() { puts("Nom!"); }
void nml.tickle() {
}
class Serpent : Animal {
void hiss() { puts("Sssss!"); }
void bite() { puts("Nom!"); }
void nml.tickle() {
- if (SERPENT__CONV_NML(me)->nml.tickles
> 2) me->_vt->serpent.bite
(me);
- else
me->_vt->serpent.hiss
(me);
+ if (SERPENT__CONV_NML(me)->nml.tickles
<= 2) Serpent_hiss
(me);
+ else
Serpent_bite
(me);
}
}
}
}
@@
-46,7
+46,7
@@
class Serpent : Animal {
class Chimaera : Lion, Goat, Serpent {
}
class Chimaera : Lion, Goat, Serpent {
}
-code c : user
[classes end, user, epilogue]
{
+code c : user {
/*----- Main driver code --------------------------------------------------*/
static void tickle_animal(Animal *a)
/*----- Main driver code --------------------------------------------------*/
static void tickle_animal(Animal *a)
@@
-55,32
+55,28
@@
static void tickle_animal(Animal *a)
for (i = 0; i < 3; i++) {
printf("tickle %s #%d...\n", a->_vt->_class->cls.name, i);
for (i = 0; i < 3; i++) {
printf("tickle %s #%d...\n", a->_vt->_class->cls.name, i);
-
a->_vt->nml.
tickle(a);
+
Animal_
tickle(a);
}
}
static void provoke_lion(Lion *l)
{
printf("provoking %s as a lion\n", l->_vt->_class->cls.name);
}
}
static void provoke_lion(Lion *l)
{
printf("provoking %s as a lion\n", l->_vt->_class->cls.name);
-
l->_vt->lion.
bite(l);
+
Lion_
bite(l);
}
static void provoke_goat(Goat *g)
{
printf("provoking %s as a goat\n", g->_vt->_class->cls.name);
}
static void provoke_goat(Goat *g)
{
printf("provoking %s as a goat\n", g->_vt->_class->cls.name);
-
g->_vt->goat.
butt(g);
+
Goat_
butt(g);
}
static void provoke_serpent(Serpent *s)
{
printf("provoking %s as a serpent\n", s->_vt->_class->cls.name);
}
static void provoke_serpent(Serpent *s)
{
printf("provoking %s as a serpent\n", s->_vt->_class->cls.name);
-
s->_vt->serpent.
bite(s);
+
Serpent_
bite(s);
}
}
-#define SOD_DECL(cls_, var_) \
- struct cls_##__ilayout var_##__layout; \
- cls_ *var_ = cls_##__class->cls.init(&var_##__layout)
-
int main(void)
{
{
int main(void)
{
{