• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/src/router/busybox-1.x/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);
168 void expr_eliminate_eq(struct expr **ep1, struct expr **ep2)
193 int expr_eq(struct expr *e1, struct expr *e2)
206 return expr_eq(e1->left.expr, e2->left.expr);
235 struct expr *expr_eliminate_yn(struct expr *e)
237 struct expr *tmp;
241 e->left.expr = expr_eliminate_yn(e->left.expr);
242 e->right.expr = expr_eliminate_yn(e->right.expr);
243 if (e->left.expr->type == E_SYMBOL) {
244 if (e->left.expr->left.sym == &symbol_no) {
245 expr_free(e->left.expr);
246 expr_free(e->right.expr);
249 e->right.expr = NULL;
251 } else if (e->left.expr->left.sym == &symbol_yes) {
252 free(e->left.expr);
253 tmp = e->right.expr;
254 *e = *(e->right.expr);
259 if (e->right.expr->type == E_SYMBOL) {
260 if (e->right.expr->left.sym == &symbol_no) {
261 expr_free(e->left.expr);
262 expr_free(e->right.expr);
265 e->right.expr = NULL;
267 } else if (e->right.expr->left.sym == &symbol_yes) {
268 free(e->right.expr);
269 tmp = e->left.expr;
270 *e = *(e->left.expr);
277 e->left.expr = expr_eliminate_yn(e->left.expr);
278 e->right.expr = expr_eliminate_yn(e->right.expr);
279 if (e->left.expr->type == E_SYMBOL) {
280 if (e->left.expr->left.sym == &symbol_no) {
281 free(e->left.expr);
282 tmp = e->right.expr;
283 *e = *(e->right.expr);
286 } else if (e->left.expr->left.sym == &symbol_yes) {
287 expr_free(e->left.expr);
288 expr_free(e->right.expr);
291 e->right.expr = NULL;
295 if (e->right.expr->type == E_SYMBOL) {
296 if (e->right.expr->left.sym == &symbol_no) {
297 free(e->right.expr);
298 tmp = e->left.expr;
299 *e = *(e->left.expr);
302 } else if (e->right.expr->left.sym == &symbol_yes) {
303 expr_free(e->left.expr);
304 expr_free(e->right.expr);
307 e->right.expr = NULL;
321 struct expr *expr_trans_bool(struct expr *e)
329 e->left.expr = expr_trans_bool(e->left.expr);
330 e->right.expr = expr_trans_bool(e->right.expr);
350 struct expr *expr_join_or(struct expr *e1, struct expr *e2)
352 struct expr *tmp;
362 tmp = e1->left.expr;
369 if (e2->left.expr->type != E_SYMBOL)
371 sym2 = e2->left.expr->left.sym;
399 if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) ||
400 (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL))
414 struct expr *expr_join_and(struct expr *e1, struct expr *e2)
416 struct expr *tmp;
426 tmp = e1->left.expr;
433 if (e2->left.expr->type != E_SYMBOL)
435 sym2 = e2->left.expr->left.sym;
508 static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2)
512 struct expr *tmp;
515 expr_eliminate_dups1(type, &e1->left.expr, &e2);
516 expr_eliminate_dups1(type, &e1->right.expr, &e2);
520 expr_eliminate_dups1(type, &e1, &e2->left.expr);
521 expr_eliminate_dups1(type, &e1, &e2->right.expr);
560 static void expr_eliminate_dups2(enum expr_type type, struct expr **ep1, struct expr **ep2)
564 struct expr *tmp, *tmp1, *tmp2;
567 expr_eliminate_dups2(type, &e1->left.expr, &e2);
568 expr_eliminate_dups2(type, &e1->right.expr, &e2);
572 expr_eliminate_dups2(type, &e1, &e2->left.expr);
573 expr_eliminate_dups2(type, &e1, &e2->right.expr);
616 struct expr *expr_eliminate_dups(struct expr *e)
640 struct expr *expr_transform(struct expr *e)
642 struct expr *tmp;
653 e->left.expr = expr_transform(e->left.expr);
654 e->right.expr = expr_transform(e->right.expr);
663 e->left.expr = expr_alloc_symbol(e->left.sym);
697 e->left.expr = expr_alloc_symbol(e->left.sym);
703 switch (e->left.expr->type) {
706 tmp = e->left.expr->left.expr;
707 free(e->left.expr);
715 tmp = e->left.expr;
722 tmp = e->left.expr;
724 e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);
726 tmp->right.expr = NULL;
731 tmp = e->left.expr;
733 e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);
735 tmp->right.expr = NULL;
739 if (e->left.expr->left.sym == &symbol_yes) {
741 tmp = e->left.expr;
748 if (e->left.expr->left.sym == &symbol_mod) {
750 tmp = e->left.expr;
757 if (e->left.expr->left.sym == &symbol_no) {
759 tmp = e->left.expr;
777 int expr_contains_symbol(struct expr *dep, struct symbol *sym)
785 return expr_contains_symbol(dep->left.expr, sym) ||
786 expr_contains_symbol(dep->right.expr, sym);
794 return expr_contains_symbol(dep->left.expr, sym);
801 bool expr_depends_symbol(struct expr *dep, struct symbol *sym)
808 return expr_depends_symbol(dep->left.expr, sym) ||
809 expr_depends_symbol(dep->right.expr, sym);
830 struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2)
832 struct expr *tmp = NULL;
841 struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2)
843 struct expr *tmp = NULL;
852 void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2)
857 expr_extract_eq(type, ep, &e1->left.expr, &e2);
858 expr_extract_eq(type, ep, &e1->right.expr, &e2);
862 expr_extract_eq(type, ep, ep1, &e2->left.expr);
863 expr_extract_eq(type, ep, ep1, &e2->right.expr);
881 struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym)
883 struct expr *e1, *e2;
893 e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);
894 e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym);
903 e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);
904 e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym);
913 return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym);
942 tristate expr_calc_value(struct expr *e)
955 val1 = expr_calc_value(e->left.expr);
956 val2 = expr_calc_value(e->right.expr);
959 val1 = expr_calc_value(e->left.expr);
960 val2 = expr_calc_value(e->right.expr);
963 val1 = expr_calc_value(e->left.expr);
1011 void expr_print(struct expr *e, void (*fn)(void *, const char *), void *data, int prevtoken)
1029 expr_print(e->left.expr, fn, data, E_NOT);
1042 expr_print(e->left.expr, fn, data, E_OR);
1044 expr_print(e->right.expr, fn, data, E_OR);
1047 expr_print(e->left.expr, fn, data, E_AND);
1049 expr_print(e->right.expr, fn, data, E_AND);
1053 if (e->left.expr) {
1055 expr_print(e->left.expr, fn, data, E_CHOICE);
1082 void expr_fprint(struct expr *e, FILE *out)
1092 void expr_gstr_print(struct expr *e, struct gstr *gs)