1
2 enum token {
3 tok_menuname,
4 tok_menuoption,
5 tok_comment,
6 tok_bool,
7 tok_tristate,
8 tok_dep_tristate,
9 tok_nop,
10 tok_if,
11 tok_else,
12 tok_fi,
13 tok_int,
14 tok_sound,
15 tok_define,
16 tok_choose,
17 tok_choice,
18 tok_unknown
19 };
20
21 enum operator {
22 op_eq,
23 op_neq,
24 op_and,
25 op_and1,
26 op_or,
27 op_bang,
28 op_lparen,
29 op_rparen,
30 op_variable,
31 op_kvariable,
32 op_shellcmd,
33 op_constant,
34 op_nuked
35 };
36
37 union var
38 {
39 char * str;
40 struct kconfig * cfg;
41 };
42
43 struct condition
44 {
45 struct condition * next;
46 enum operator op;
47 union var variable;
48 };
49
50 #define GLOBAL_WRITTEN 1
51 #define CFG_DUP 2
52 #define UNSAFE 4
53
54 struct kconfig
55 {
56 struct kconfig * next;
57 int flags;
58 enum token tok;
59 char menu_number;
60 char menu_line;
61 char submenu_start;
62 char submenu_end;
63 char * optionname;
64 char * label;
65 char * value;
66 int choice_value;
67 struct kconfig * choice_label;
68 union var depend;
69 struct condition * cond;
70 };
71
72 extern struct kconfig * config;
73 extern struct kconfig * clast;
74 extern struct kconfig * koption;
75