1
0
Files
irix-657m-src/eoe/cmd/kbdload/symtab.h
2022-09-29 17:59:04 +03:00

110 lines
2.7 KiB
C

/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
/* The copyright notice above does not evidence any */
/* actual or intended publication of such source code. */
/* #ident "@(#)kbdload:symtab.h 1.1" */
#ident "$Revision: 1.1 $"
/*
* symtab.h - symbol table structure & flags
*/
#define UNDEF 0 /* for undefined symbols... */
#define S_FUNC 1 /* operator */
#define S_PARM 2 /* parameter (string) */
#define S_NAME 3 /* name of a binding set */
#define S_SWTCH 4 /* is a value */
/*
* S_FUNC type nodes are parents. S_PARAM type nodes are children.
* many children may point to the same parent.
*/
struct sym {
char *s_name; /* pointer to name of item */
char *s_value; /* symbol value */
char s_type; /* symbol type (one of S_?) */
struct sym *s_next; /* ptr to next in chain */
};
struct sym *s_find(), *s_create(), *s_lookup(), *s_value();
char *strsave();
#define N_CHILD 0 /* child node ptr */
#define N_RESULT 0x01 /* result pointer */
#define N_EMPTY 0x02 /* temp "filled" node */
struct node {
unsigned char n_val;
char n_flag; /* N_CHILD / N_RESULT / N_EMPTY */
unsigned short n_num; /* node number */
struct node *n_next;
union {
struct node *n_child;
char *n_result;
} n_what;
unsigned short n_node; /* number of child node or ptr to text */
int n_lnum; /* during initial tree, N_RESULT line number */
};
#define E_DUP (-2)
#define E_ERROR (-1)
/*
* For the "file" command, use following lines in /etc/magic:
0 string kbd!map kbd map file
>8 byte >0 Ver %d:
>10 short >0 with %d table(s)
*/
#define KBD_MAGIC "kbd!map"
#define KBD_HOFF 8 /* offset in h_magic[] of version number */
/*
* Version stamps: The 3B2 and 386 byte order are incompatible, therefore
* they must have different version numbers to insure that tables compiled
* for one don't get loaded on the other. The loader will reject them
* right away. Don't define another unless it really won't work for
* your machine.
*/
#ifdef u3b2
# define KBD_VER 1 /* 3B2 version */
#else
# ifdef i386
# define KBD_VER 2 /* 386 version */
# else
# define KBD_VER 3 /* other version */
# endif
#endif
/*
* kbd_map only used by the compiler.
*/
struct kbd_map {
char *mapname;
struct node *maproot;
unsigned char *maptext; /* the text */
struct cornode *mapnodes; /* the nodes */
struct kbd_tab *maptab;
unsigned char *mapone;
unsigned char *maperr; /* error string */
unsigned char map_min; /* min & max values */
unsigned char map_max;
};
/*
* For linkage maps (mapname is (-1), maptext points to string.
* For external (ALP) maps, it's (-2), maptext points to string.
*/
#define LINKAGE ((char *) -1)
#define EXTERNAL ((char *) -2)