typedef struct { long addr; long type; } object; | |
object bar (object blah) | |
{ | |
abort(); | |
} | |
object foo (object x, object y) | |
{ | |
object z = *(object*)(x.addr); | |
if (z.type & 64) | |
{ | |
y = *(object*)(z.addr+sizeof(object)); | |
z = *(object*)(z.addr); | |
if (z.type & 64) | |
y = bar(y); | |
} | |
return y; | |
} | |
int nil; | |
object cons1[2] = { {(long) &nil, 0}, {(long) &nil, 0} }; | |
object cons2[2] = { {(long) &cons1, 64}, {(long) &nil, 0} }; | |
main() | |
{ | |
object x = {(long) &cons2, 64}; | |
object y = {(long) &nil, 0}; | |
object three = foo(x,y); | |
return 0; | |
} |