kconfig/expr.h
changeset 1174 7710d81d15e7
parent 1 eeea35fbf182
child 1234 20da13326d14
     1.1 --- a/kconfig/expr.h	Sat Feb 24 11:00:05 2007 +0000
     1.2 +++ b/kconfig/expr.h	Thu Jan 29 18:53:32 2009 +0000
     1.3 @@ -25,14 +25,13 @@
     1.4  
     1.5  #define FILE_BUSY		0x0001
     1.6  #define FILE_SCANNED		0x0002
     1.7 -#define FILE_PRINTED		0x0004
     1.8  
     1.9  typedef enum tristate {
    1.10  	no, mod, yes
    1.11  } tristate;
    1.12  
    1.13  enum expr_type {
    1.14 -	E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_CHOICE, E_SYMBOL, E_RANGE
    1.15 +	E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_LIST, E_SYMBOL, E_RANGE
    1.16  };
    1.17  
    1.18  union expr_data {
    1.19 @@ -45,9 +44,12 @@
    1.20  	union expr_data left, right;
    1.21  };
    1.22  
    1.23 -#define E_OR(dep1, dep2)	(((dep1)>(dep2))?(dep1):(dep2))
    1.24 -#define E_AND(dep1, dep2)	(((dep1)<(dep2))?(dep1):(dep2))
    1.25 -#define E_NOT(dep)		(2-(dep))
    1.26 +#define EXPR_OR(dep1, dep2)	(((dep1)>(dep2))?(dep1):(dep2))
    1.27 +#define EXPR_AND(dep1, dep2)	(((dep1)<(dep2))?(dep1):(dep2))
    1.28 +#define EXPR_NOT(dep)		(2-(dep))
    1.29 +
    1.30 +#define expr_list_for_each_sym(l, e, s) \
    1.31 +	for (e = (l); e && (s = e->right.sym); e = e->left.expr)
    1.32  
    1.33  struct expr_value {
    1.34  	struct expr *expr;
    1.35 @@ -71,14 +73,12 @@
    1.36  struct symbol {
    1.37  	struct symbol *next;
    1.38  	char *name;
    1.39 -	char *help;
    1.40  	enum symbol_type type;
    1.41  	struct symbol_value curr;
    1.42  	struct symbol_value def[4];
    1.43  	tristate visible;
    1.44  	int flags;
    1.45  	struct property *prop;
    1.46 -	struct expr *dep, *dep2;
    1.47  	struct expr_value rev_dep;
    1.48  };
    1.49  
    1.50 @@ -88,7 +88,6 @@
    1.51  #define SYMBOL_CHECK		0x0008
    1.52  #define SYMBOL_CHOICE		0x0010
    1.53  #define SYMBOL_CHOICEVAL	0x0020
    1.54 -#define SYMBOL_PRINTED		0x0040
    1.55  #define SYMBOL_VALID		0x0080
    1.56  #define SYMBOL_OPTIONAL		0x0100
    1.57  #define SYMBOL_WRITE		0x0200
    1.58 @@ -107,7 +106,8 @@
    1.59  #define SYMBOL_HASHMASK		0xff
    1.60  
    1.61  enum prop_type {
    1.62 -	P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE
    1.63 +	P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE,
    1.64 +	P_SELECT, P_RANGE, P_ENV
    1.65  };
    1.66  
    1.67  struct property {
    1.68 @@ -139,7 +139,7 @@
    1.69  	struct property *prompt;
    1.70  	struct expr *dep;
    1.71  	unsigned int flags;
    1.72 -	//char *help;
    1.73 +	char *help;
    1.74  	struct file *file;
    1.75  	int lineno;
    1.76  	void *data;