| 1 | /* |
| 2 | * @(#)var.h 3.6 %G% |
| 3 | */ |
| 4 | |
| 5 | struct var { |
| 6 | struct var *r_left; |
| 7 | struct var *r_right; |
| 8 | char *r_name; |
| 9 | struct value r_val; |
| 10 | }; |
| 11 | |
| 12 | struct var *var_set1(); |
| 13 | struct var *var_setstr1(); |
| 14 | struct var *var_setnum1(); |
| 15 | struct var **var_lookup1(); |
| 16 | |
| 17 | #define var_set(n, v) var_set1(&var_head, n, v) |
| 18 | #define var_setstr(n, s) var_setstr1(&var_head, n, s) |
| 19 | #define var_setnum(n, i) var_setnum1(&var_head, n, i) |
| 20 | #define var_unset(n) var_unset1(&var_head, n) |
| 21 | #define var_lookup(n) (*var_lookup1(&var_head, n)) |
| 22 | #define var_walk(f, a) var_walk1(var_head, f, a) |
| 23 | |
| 24 | struct var *var_head; /* secret, shhh */ |