• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/scripts/kconfig/

Lines Matching refs:expr

15 struct expr *expr_alloc_symbol(struct symbol *sym)
17 struct expr *e = malloc(sizeof(*e));
24 struct expr *expr_alloc_one(enum expr_type type, struct expr *ce)
26 struct expr *e = malloc(sizeof(*e));
29 e->left.expr = ce;
33 struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2)
35 struct expr *e = malloc(sizeof(*e));
38 e->left.expr = e1;
39 e->right.expr = e2;
43 struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2)
45 struct expr *e = malloc(sizeof(*e));
53 struct expr *expr_alloc_and(struct expr *e1, struct expr *e2)
60 struct expr *expr_alloc_or(struct expr *e1, struct expr *e2)
67 struct expr *expr_copy(struct expr *org)
69 struct expr *e;
81 e->left.expr = expr_copy(org->left.expr);
91 e->left.expr = expr_copy(org->left.expr);
92 e->right.expr = expr_copy(org->right.expr);
104 void expr_free(struct expr *e)
113 expr_free(e->left.expr);
120 expr_free(e->left.expr);
121 expr_free(e->right.expr);
135 static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2)
138 __expr_eliminate_eq(type, &e1->left.expr, &e2);
139 __expr_eliminate_eq(type, &e1->right.expr, &e2);
143 __expr_eliminate_eq(type, &e1, &e2->left.expr);
144 __expr_eliminate_eq(type, &e1, &e2->right.expr);
169 void expr_eliminate_eq(struct expr **ep1, struct expr **ep2)
194 int expr_eq(struct expr *e1, struct expr *e2)
207 return expr_eq(e1->left.expr, e2->left.expr);
236 struct expr *expr_eliminate_yn(struct expr *e)
238 struct expr *tmp;
242 e->left.expr = expr_eliminate_yn(e->left.expr);
243 e->right.expr = expr_eliminate_yn(e->right.expr);
244 if (e->left.expr->type == E_SYMBOL) {
245 if (e->left.expr->left.sym == &symbol_no) {
246 expr_free(e->left.expr);
247 expr_free(e->right.expr);
250 e->right.expr = NULL;
252 } else if (e->left.expr->left.sym == &symbol_yes) {
253 free(e->left.expr);
254 tmp = e->right.expr;
255 *e = *(e->right.expr);
260 if (e->right.expr->type == E_SYMBOL) {
261 if (e->right.expr->left.sym == &symbol_no) {
262 expr_free(e->left.expr);
263 expr_free(e->right.expr);
266 e->right.expr = NULL;
268 } else if (e->right.expr->left.sym == &symbol_yes) {
269 free(e->right.expr);
270 tmp = e->left.expr;
271 *e = *(e->left.expr);
278 e->left.expr = expr_eliminate_yn(e->left.expr);
279 e->right.expr = expr_eliminate_yn(e->right.expr);
280 if (e->left.expr->type == E_SYMBOL) {
281 if (e->left.expr->left.sym == &symbol_no) {
282 free(e->left.expr);
283 tmp = e->right.expr;
284 *e = *(e->right.expr);
287 } else if (e->left.expr->left.sym == &symbol_yes) {
288 expr_free(e->left.expr);
289 expr_free(e->right.expr);
292 e->right.expr = NULL;
296 if (e->right.expr->type == E_SYMBOL) {
297 if (e->right.expr->left.sym == &symbol_no) {
298 free(e->right.expr);
299 tmp = e->left.expr;
300 *e = *(e->left.expr);
303 } else if (e->right.expr->left.sym == &symbol_yes) {
304 expr_free(e->left.expr);
305 expr_free(e->right.expr);
308 e->right.expr = NULL;
322 struct expr *expr_trans_bool(struct expr *e)
330 e->left.expr = expr_trans_bool(e->left.expr);
331 e->right.expr = expr_trans_bool(e->right.expr);
351 static struct expr *expr_join_or(struct expr *e1, struct expr *e2)
353 struct expr *tmp;
363 tmp = e1->left.expr;
370 if (e2->left.expr->type != E_SYMBOL)
372 sym2 = e2->left.expr->left.sym;
400 if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) ||
401 (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL))
415 static struct expr *expr_join_and(struct expr *e1, struct expr *e2)
417 struct expr *tmp;
427 tmp = e1->left.expr;
434 if (e2->left.expr->type != E_SYMBOL)
436 sym2 = e2->left.expr->left.sym;
509 static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2)
513 struct expr *tmp;
516 expr_eliminate_dups1(type, &e1->left.expr, &e2);
517 expr_eliminate_dups1(type, &e1->right.expr, &e2);
521 expr_eliminate_dups1(type, &e1, &e2->left.expr);
522 expr_eliminate_dups1(type, &e1, &e2->right.expr);
561 static void expr_eliminate_dups2(enum expr_type type, struct expr **ep1, struct expr **ep2)
565 struct expr *tmp, *tmp1, *tmp2;
568 expr_eliminate_dups2(type, &e1->left.expr, &e2);
569 expr_eliminate_dups2(type, &e1->right.expr, &e2);
573 expr_eliminate_dups2(type, &e1, &e2->left.expr);
574 expr_eliminate_dups2(type, &e1, &e2->right.expr);
617 struct expr *expr_eliminate_dups(struct expr *e)
641 struct expr *expr_transform(struct expr *e)
643 struct expr *tmp;
654 e->left.expr = expr_transform(e->left.expr);
655 e->right.expr = expr_transform(e->right.expr);
664 e->left.expr = expr_alloc_symbol(e->left.sym);
698 e->left.expr = expr_alloc_symbol(e->left.sym);
704 switch (e->left.expr->type) {
707 tmp = e->left.expr->left.expr;
708 free(e->left.expr);
716 tmp = e->left.expr;
723 tmp = e->left.expr;
725 e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);
727 tmp->right.expr = NULL;
732 tmp = e->left.expr;
734 e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);
736 tmp->right.expr = NULL;
740 if (e->left.expr->left.sym == &symbol_yes) {
742 tmp = e->left.expr;
749 if (e->left.expr->left.sym == &symbol_mod) {
751 tmp = e->left.expr;
758 if (e->left.expr->left.sym == &symbol_no) {
760 tmp = e->left.expr;
778 int expr_contains_symbol(struct expr *dep, struct symbol *sym)
786 return expr_contains_symbol(dep->left.expr, sym) ||
787 expr_contains_symbol(dep->right.expr, sym);
795 return expr_contains_symbol(dep->left.expr, sym);
802 bool expr_depends_symbol(struct expr *dep, struct symbol *sym)
809 return expr_depends_symbol(dep->left.expr, sym) ||
810 expr_depends_symbol(dep->right.expr, sym);
831 struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2)
833 struct expr *tmp = NULL;
842 struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2)
844 struct expr *tmp = NULL;
853 void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2)
858 expr_extract_eq(type, ep, &e1->left.expr, &e2);
859 expr_extract_eq(type, ep, &e1->right.expr, &e2);
863 expr_extract_eq(type, ep, ep1, &e2->left.expr);
864 expr_extract_eq(type, ep, ep1, &e2->right.expr);
882 struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym)
884 struct expr *e1, *e2;
894 e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);
895 e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym);
904 e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);
905 e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym);
914 return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym);
943 tristate expr_calc_value(struct expr *e)
956 val1 = expr_calc_value(e->left.expr);
957 val2 = expr_calc_value(e->right.expr);
960 val1 = expr_calc_value(e->left.expr);
961 val2 = expr_calc_value(e->right.expr);
964 val1 = expr_calc_value(e->left.expr);
1012 void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken)
1030 expr_print(e->left.expr, fn, data, E_NOT);
1049 expr_print(e->left.expr, fn, data, E_OR);
1051 expr_print(e->right.expr, fn, data, E_OR);
1054 expr_print(e->left.expr, fn, data, E_AND);
1056 expr_print(e->right.expr, fn, data, E_AND);
1060 if (e->left.expr) {
1062 expr_print(e->left.expr, fn, data, E_LIST);
1089 void expr_fprint(struct expr *e, FILE *out)
1124 void expr_gstr_print(struct expr *e, struct gstr *gs)