From 79f5701e07a81914cc4c20e60f496190d333d6e4 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Mon, 19 Jun 2017 14:20:45 -0400 Subject: [PATCH] More semantic typing - a step towards eliminating packing. --- actions.c | 15 +++++---------- advent.h | 2 +- main.c | 2 +- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/actions.c b/actions.c index cc252b5..c547b35 100644 --- a/actions.c +++ b/actions.c @@ -5,16 +5,11 @@ #include "newdb.h" /* Limit visibility of ugly globals. Eventually these should go away. */ -extern long WD1, WD1X, WD2, WD2X; +extern token_t WD1, WD1X, WD2, WD2X; -/* - * Action handlers. Eventually we'll do lookup through a method table - * that calls these. - */ - -static int fill(token_t verb, token_t); +static int fill(token_t, token_t); -static int attack(FILE *input, long verb, token_t obj) +static int attack(FILE *input, token_t verb, token_t obj) /* Attack. Assume target if unambiguous. "Throw" also links here. * Attackable objects fall into two categories: enemies (snake, * dwarf, etc.) and others (bird, clam, machine). Ambiguous if 2 @@ -110,7 +105,7 @@ static int attack(FILE *input, long verb, token_t obj) return GO_CLEAROBJ; } -static int bigwords(long foo) +static int bigwords(token_t foo) /* FEE FIE FOE FOO (AND FUM). Advance to next state if given in proper order. * Look up WD1 in section 3 of vocab to determine which word we've got. Last * word zips the eggs back to the giant room (unless already there). */ @@ -1000,7 +995,7 @@ static int wave(token_t verb, token_t obj) } } -int action(FILE *input, enum speechpart part, long verb, token_t obj) +int action(FILE *input, enum speechpart part, token_t verb, token_t obj) /* Analyse a verb. Remember what it was, go back for object if second word * unless verb is "say", which snarfs arbitrary second word. */ diff --git a/advent.h b/advent.h index 0bf87bb..08ae5e3 100644 --- a/advent.h +++ b/advent.h @@ -178,7 +178,7 @@ extern long AMBER, ATTACK, AXE, BACK, BATTERY, BEAR, enum speechpart {unknown, intransitive, transitive}; void initialise(void); -int action(FILE *input, enum speechpart part, long verb, token_t obj); +int action(FILE *input, enum speechpart part, token_t verb, token_t obj); /* Phase codes for action returns. * These were at one time FORTRAN line numbers. diff --git a/main.c b/main.c index c1272c4..8791293 100644 --- a/main.c +++ b/main.c @@ -41,7 +41,7 @@ long AMBER, AXE, BACK, BATTERY, BEAR, BIRD, BLOOD, RUBY, RUG, SAPPH, SAY, SIGN, SNAKE, STEPS, STREAM, THROW, TRIDENT, TROLL, TROLL2, URN, VASE, VEND, VOLCANO, WATER; -long WD1, WD1X, WD2, WD2X; +token_t WD1, WD1X, WD2, WD2X; FILE *logfp = NULL, *rfp = NULL; bool oldstyle = false; -- 2.31.1