/* befunge.i ... by hmaon */ %module hbef %{ #include "befunge.h" %} typedef struct { int x, y; } coord; typedef struct { int *stack; int stacksize; int sp; } stackt; typedef struct{ int *befungespace; int **mem; coord size; coord ip; coord delta; stackt *stack; stackt *call; stackt *CTX; int mode; /* bitfield */ int prevstrchar; /* previoius character in string, for \ escaping */ int teleport; %addmethods { bef_interp(int stack, int w, int h) { return bef_allocinterp(stack, w, h); } ~bef_interp() { bef_free(self); } void push(int n) { push(self, n); } int pop() { return pop(self); } void do(char c) { bef_do(self, c); } } } bef_interp; extern int tick, stringtick, noptick, btrace; extern void strepl (stackt *, int); extern void stpush (stackt *, int); extern int stpeek (stackt *); extern int stpop (stackt *); extern int stdig (stackt *, int depth); extern void breplace (bef_interp *, int); extern void push (bef_interp *, int); extern int bpeek (bef_interp *); extern int pop (bef_interp *); %new extern bef_interp *bef_allocinterp (int stack, int w, int h); extern void bef_free (bef_interp *); extern void bef_reset (bef_interp *); extern void bef_do (bef_interp *, char); extern int bef_step (bef_interp *); extern int bef_run (bef_interp *); extern int strtoicpy (int *, char *); extern int bef_loadcode (bef_interp *, FILE *); extern int bef_load93 (bef_interp *, char *name); %new extern bef_interp *bef_loadh (char *name);