48 lines
1.8 KiB
C
48 lines
1.8 KiB
C
#ident "$Header: /proj/irix6.5.7m/isms/irix/cmd/icrash_old/include/RCS/variable.h,v 1.1 1999/05/25 19:19:20 tjm Exp $"
|
|
|
|
/* Struct to hold information about eval variables
|
|
*/
|
|
typedef struct variable_s {
|
|
btnode_t v_bt; /* Must be first */
|
|
int v_flags;
|
|
char *v_exp; /* What was entered on command line */
|
|
char *v_typestr; /* Actual type string after eval() call */
|
|
node_t *v_node;
|
|
} variable_t;
|
|
|
|
#define v_left v_bt.bt_left
|
|
#define v_right v_bt.bt_right
|
|
#define v_name v_bt.bt_key
|
|
|
|
/* Flag values
|
|
*/
|
|
#define V_PERM 0x001 /* can't be unset - can be modified */
|
|
#define V_DEFAULT 0x002 /* set at startup */
|
|
#define V_NOMOD 0x004 /* cannot be modified */
|
|
#define V_TYPEDEF 0x008 /* contains typed data */
|
|
#define V_REC_STRUCT 0x010 /* direct ref to struct/member (not pointer) */
|
|
#define V_STRING 0x020 /* contains ASCII string (no type) */
|
|
#define V_COMMAND 0x040 /* contains command string (no type) */
|
|
#define V_OPTION 0x080 /* contains option flag (e.g., $hexints) */
|
|
#define V_PERM_NODE 0x100 /* Don't free node after setting variable */
|
|
|
|
/* Variable table struct
|
|
*/
|
|
typedef struct vtab_s {
|
|
variable_t *vt_root;
|
|
int vt_count;
|
|
} vtab_t;
|
|
|
|
extern vtab_t *vtab; /* Pointer to table of eval variable info */
|
|
|
|
/* Function Prototypes
|
|
*/
|
|
variable_t *make_variable(char *, char *, node_t *, int);
|
|
void clean_variable(variable_t *);
|
|
void free_variable(variable_t *);
|
|
void init_variables(vtab_t *);
|
|
int set_variable(vtab_t *, char *, char *, node_t *, int);
|
|
int unset_variable(vtab_t *, variable_t *);
|
|
variable_t *find_variable(vtab_t *, char *, int);
|
|
|