dag@per2.UUCP (Daniel A. Glasser) (04/06/89)
I need to do the following in Modula-2 (JPI on the PC, specificly) --
/* Begin C code example */
typedef struct entry_str {
unsigned char es_tag;
int (*es_action)();
short es_speed;
} entry_t;
extern int go_up(), go_down(), go_back(), go_forward(), go_right(),
go_left(), go_home(), stay_put(), default_action;
static entry_t things_to_do[] = {
{ 'U', go_up, 10 },
{ 'u', go_up, 1 },
{ 'D', go_down, 10 },
{ 'd', go_down, 1 },
{ 'B', go_back, 10 },
{ 'b', go_back, 1 },
{ 'F', go_forward, 10 },
{ 'f', go_forward, 1 },
{ 'R', go_right, 10 },
{ 'r', go_right, 1 },
{ 'L', go_left, 10 },
{ 'l', go_left, 1 },
{ 'H', go_home, 0 },
{ 'h', go_home, 0 },
{ 'S', stay_put, 0 },
{ 's', stay_put, 0 },
{ '\0', default_action, 0 }
};
int activate(c)
char c;
{
entry_t *table = things_to_do;
while ((table->es_tag != c) && (table->es_tag != '\0'))
++table;
return (*table->es_action)(table->es_speed);
}
/* End C code example */
I think I need to set up a structured CONST array with the procedure addresses.
It may be that I really need a readonly VAR which is pre-initialized.
I don't know Modula-2 that well, and can't get the Wirth book locally in
less than about 3 weeks.
None of the tutorials on M2 that I've come across deal with this.
The above example is, in fact, simplified greatly. It does not come
from my code at all, I just typed it in to this message. However it
shows what I need to do. Can anyone supply equivilent Modula-2 code?
I need this information soon.
Thanks in advance --
Daniel A. Glasser
--
_____________________________________________________________________________
Daniel A. Glasser One of those things that goes
uwvax!per2!dag "BUMP!!!(ouch)" in the night.
---Persoft, Inc.---------465 Science Drive-------Madison, WI 53711-----------