1
0
Files
irix-657m-src/irix/cmd/icrash/include/variable.h
2022-09-29 17:59:04 +03:00

48 lines
1.8 KiB
C

#ident "$Header: /proj/irix6.5.7m/isms/irix/cmd/icrash/include/RCS/variable.h,v 1.5 1999/05/25 19:21:38 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);