rpc: implement new upcall
[safe/jmp/linux-2.6] / scripts / kconfig / expr.h
index 043859d..9d4cba1 100644 (file)
@@ -25,14 +25,13 @@ struct file {
 
 #define FILE_BUSY              0x0001
 #define FILE_SCANNED           0x0002
-#define FILE_PRINTED           0x0004
 
 typedef enum tristate {
        no, mod, yes
 } tristate;
 
 enum expr_type {
-       E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_CHOICE, E_SYMBOL, E_RANGE
+       E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_LIST, E_SYMBOL, E_RANGE
 };
 
 union expr_data {
@@ -45,9 +44,12 @@ struct expr {
        union expr_data left, right;
 };
 
-#define E_OR(dep1, dep2)       (((dep1)>(dep2))?(dep1):(dep2))
-#define E_AND(dep1, dep2)      (((dep1)<(dep2))?(dep1):(dep2))
-#define E_NOT(dep)             (2-(dep))
+#define EXPR_OR(dep1, dep2)    (((dep1)>(dep2))?(dep1):(dep2))
+#define EXPR_AND(dep1, dep2)   (((dep1)<(dep2))?(dep1):(dep2))
+#define EXPR_NOT(dep)          (2-(dep))
+
+#define expr_list_for_each_sym(l, e, s) \
+       for (e = (l); e && (s = e->right.sym); e = e->left.expr)
 
 struct expr_value {
        struct expr *expr;
@@ -65,19 +67,18 @@ enum symbol_type {
 
 enum {
        S_DEF_USER,             /* main user value */
+       S_DEF_AUTO,
 };
 
 struct symbol {
        struct symbol *next;
        char *name;
-       char *help;
        enum symbol_type type;
        struct symbol_value curr;
        struct symbol_value def[4];
        tristate visible;
        int flags;
        struct property *prop;
-       struct expr *dep, *dep2;
        struct expr_value rev_dep;
 };
 
@@ -87,22 +88,26 @@ struct symbol {
 #define SYMBOL_CHECK           0x0008
 #define SYMBOL_CHOICE          0x0010
 #define SYMBOL_CHOICEVAL       0x0020
-#define SYMBOL_PRINTED         0x0040
 #define SYMBOL_VALID           0x0080
 #define SYMBOL_OPTIONAL                0x0100
 #define SYMBOL_WRITE           0x0200
 #define SYMBOL_CHANGED         0x0400
-#define SYMBOL_NEW             0x0800
 #define SYMBOL_AUTO            0x1000
 #define SYMBOL_CHECKED         0x2000
 #define SYMBOL_WARNED          0x8000
+#define SYMBOL_DEF             0x10000
+#define SYMBOL_DEF_USER                0x10000
+#define SYMBOL_DEF_AUTO                0x20000
+#define SYMBOL_DEF3            0x40000
+#define SYMBOL_DEF4            0x80000
 
 #define SYMBOL_MAXLENGTH       256
 #define SYMBOL_HASHSIZE                257
 #define SYMBOL_HASHMASK                0xff
 
 enum prop_type {
-       P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE
+       P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE,
+       P_SELECT, P_RANGE, P_ENV
 };
 
 struct property {
@@ -134,7 +139,7 @@ struct menu {
        struct property *prompt;
        struct expr *dep;
        unsigned int flags;
-       //char *help;
+       char *help;
        struct file *file;
        int lineno;
        void *data;
@@ -151,6 +156,7 @@ struct file *lookup_file(const char *name);
 
 extern struct symbol symbol_yes, symbol_no, symbol_mod;
 extern struct symbol *modules_sym;
+extern struct symbol *sym_defconfig_list;
 extern int cdebug;
 struct expr *expr_alloc_symbol(struct symbol *sym);
 struct expr *expr_alloc_one(enum expr_type type, struct expr *ce);