typedef struct num { char is_fixnum; union { long ivalue; } value; } num; struct cell { union { struct { struct cell *_car; struct cell *_cdr; } _cons; } _object; }; struct scheme { struct cell * args; struct cell * NIL; }; num nvalue(struct cell * p) { } num num_intdiv(num a, num b) { num ret; if (ret.is_fixnum) { ret.value.ivalue = a.value.ivalue / b.value.ivalue; } return ret; } void opexe_2() { struct scheme * sc; struct cell * x; num v; int op; switch (op) { case 0: x = ((sc->args)->_object._cons._car); for (; x != sc->NIL; x = ((x)->_object._cons._cdr)) { if (ivalue(((x)->_object._cons._car)) != 0) v = num_intdiv(v, nvalue(((x)->_object._cons. _car))); } } } typedef struct { char *name; } op_code_info; op_code_info dispatch_table[] = { opexe_2 }; void scheme_init_custom_alloc() { int i; int n = 0; for (i = 0; i < n; i++) { if (dispatch_table[i].name != 0) { } } }