|
|
typedef struct { | typedef struct { |
short x, y; | short x, y; |
int dir; | int dir; |
} stack_t; |
} stack2_t; |
| |
#define NORTH 0 | #define NORTH 0 |
#define WEST 1 | #define WEST 1 |
#define SOUTH 2 | #define SOUTH 2 |
#define EAST 3 | #define EAST 3 |
struct { | struct { |
stack_t *s; |
stack2_t *s; |
int top; | int top; |
int allocked; | int allocked; |
} Stack; | } Stack; |
|
|
int firstX, firstY; | int firstX, firstY; |
int mask, match, value; | int mask, match, value; |
{ | { |
register stack_t *sp; |
register stack2_t *sp; |
| |
Stack.s = (stack_t *) calloc(256, sizeof(stack_t)); |
Stack.s = (stack2_t *) calloc(256, sizeof(stack2_t)); |
Stack.allocked = 256; | Stack.allocked = 256; |
Stack.top = -1; | Stack.top = -1; |
stackPush(firstX, firstY, NORTH); | stackPush(firstX, firstY, NORTH); |
|
|
{ | { |
if (++Stack.top >= Stack.allocked) { | if (++Stack.top >= Stack.allocked) { |
Stack.allocked += 256; | Stack.allocked += 256; |
Stack.s = (stack_t *) realloc(Stack.s, Stack.allocked * sizeof(stack_t)); |
Stack.s = (stack2_t *) realloc(Stack.s, Stack.allocked * sizeof(stack2_t)); |
if(Debug)fprintf(stderr, "Stack growing to %d\n", Stack.allocked); | if(Debug)fprintf(stderr, "Stack growing to %d\n", Stack.allocked); |
} | } |
Stack.s[Stack.top].x = x; | Stack.s[Stack.top].x = x; |