Lines Matching refs:sym

45 enum symbol_type sym_get_type(const struct symbol *sym)  in sym_get_type()  argument
47 enum symbol_type type = sym->type; in sym_get_type()
80 struct menu *sym_get_prompt_menu(const struct symbol *sym) in sym_get_prompt_menu() argument
84 list_for_each_entry(m, &sym->menus, link) in sym_get_prompt_menu()
98 struct menu *sym_get_choice_menu(const struct symbol *sym) in sym_get_choice_menu() argument
106 menu = sym_get_prompt_menu(sym); in sym_get_choice_menu()
112 } while (menu && !menu->sym); in sym_get_choice_menu()
114 if (menu && menu->sym && sym_is_choice(menu->sym)) in sym_get_choice_menu()
120 static struct property *sym_get_default_prop(struct symbol *sym) in sym_get_default_prop() argument
124 for_all_defaults(sym, prop) { in sym_get_default_prop()
132 struct property *sym_get_range_prop(struct symbol *sym) in sym_get_range_prop() argument
136 for_all_properties(sym, prop, P_RANGE) { in sym_get_range_prop()
144 static long long sym_get_range_val(struct symbol *sym, int base) in sym_get_range_val() argument
146 sym_calc_value(sym); in sym_get_range_val()
147 switch (sym->type) { in sym_get_range_val()
157 return strtoll(sym->curr.val, NULL, base); in sym_get_range_val()
160 static void sym_validate_range(struct symbol *sym) in sym_validate_range() argument
167 switch (sym->type) { in sym_validate_range()
177 prop = sym_get_range_prop(sym); in sym_validate_range()
180 val = strtoll(sym->curr.val, NULL, base); in sym_validate_range()
181 range_sym = prop->expr->left.sym; in sym_validate_range()
184 range_sym = prop->expr->right.sym; in sym_validate_range()
189 sym->curr.val = range_sym->curr.val; in sym_validate_range()
192 static void sym_set_changed(struct symbol *sym) in sym_set_changed() argument
196 list_for_each_entry(menu, &sym->menus, link) in sym_set_changed()
199 menu = sym_get_choice_menu(sym); in sym_set_changed()
206 struct symbol *sym; in sym_set_all_changed() local
208 for_all_symbols(sym) in sym_set_all_changed()
209 sym_set_changed(sym); in sym_set_all_changed()
212 static void sym_calc_visibility(struct symbol *sym) in sym_calc_visibility() argument
219 for_all_prompts(sym, prop) { in sym_calc_visibility()
223 if (tri == mod && (sym->type != S_TRISTATE || modules_val == no)) in sym_calc_visibility()
225 if (sym->visible != tri) { in sym_calc_visibility()
226 sym->visible = tri; in sym_calc_visibility()
227 sym_set_changed(sym); in sym_calc_visibility()
229 if (sym_is_choice_value(sym)) in sym_calc_visibility()
233 if (sym->dir_dep.expr) in sym_calc_visibility()
234 tri = expr_calc_value(sym->dir_dep.expr); in sym_calc_visibility()
235 if (tri == mod && sym_get_type(sym) == S_BOOLEAN) in sym_calc_visibility()
237 if (sym->dir_dep.tri != tri) { in sym_calc_visibility()
238 sym->dir_dep.tri = tri; in sym_calc_visibility()
239 sym_set_changed(sym); in sym_calc_visibility()
242 if (sym->rev_dep.expr) in sym_calc_visibility()
243 tri = expr_calc_value(sym->rev_dep.expr); in sym_calc_visibility()
244 if (tri == mod && sym_get_type(sym) == S_BOOLEAN) in sym_calc_visibility()
246 if (sym->rev_dep.tri != tri) { in sym_calc_visibility()
247 sym->rev_dep.tri = tri; in sym_calc_visibility()
248 sym_set_changed(sym); in sym_calc_visibility()
251 if (sym->implied.expr) in sym_calc_visibility()
252 tri = expr_calc_value(sym->implied.expr); in sym_calc_visibility()
253 if (tri == mod && sym_get_type(sym) == S_BOOLEAN) in sym_calc_visibility()
255 if (sym->implied.tri != tri) { in sym_calc_visibility()
256 sym->implied.tri = tri; in sym_calc_visibility()
257 sym_set_changed(sym); in sym_calc_visibility()
274 for_all_defaults(choice->sym, prop) { in sym_choice_default()
285 if (menu->sym && menu->sym->visible != no) in sym_choice_default()
286 return menu->sym; in sym_choice_default()
302 struct symbol *sym; in sym_calc_choice() local
306 list_for_each_entry(sym, &choice->choice_members, choice_link) { in sym_calc_choice()
307 sym_calc_visibility(sym); in sym_calc_choice()
308 if (sym->visible == no) in sym_calc_choice()
312 if (sym_has_value(sym) && sym->def[S_DEF_USER].tri == yes) { in sym_calc_choice()
313 res = sym; in sym_calc_choice()
331 sym = menu->sym; in sym_calc_choice()
333 if (!sym || sym->visible == no || sym_has_value(sym)) in sym_calc_choice()
336 res = sym; in sym_calc_choice()
346 list_for_each_entry_reverse(sym, &choice->choice_members, in sym_calc_choice()
348 if (sym->visible == no) in sym_calc_choice()
351 res = sym; in sym_calc_choice()
359 sym = menu->sym; in sym_calc_choice()
361 if (!sym || sym->visible == no) in sym_calc_choice()
364 val = sym == res ? yes : no; in sym_calc_choice()
366 if (sym->curr.tri != val) in sym_calc_choice()
367 sym_set_changed(sym); in sym_calc_choice()
369 sym->curr.tri = val; in sym_calc_choice()
370 sym->flags |= SYMBOL_VALID | SYMBOL_WRITE; in sym_calc_choice()
376 static void sym_warn_unmet_dep(const struct symbol *sym) in sym_warn_unmet_dep() argument
382 sym->name); in sym_warn_unmet_dep()
385 sym->dir_dep.tri == mod ? 'm' : 'n'); in sym_warn_unmet_dep()
386 expr_gstr_print(sym->dir_dep.expr, &gs); in sym_warn_unmet_dep()
389 expr_gstr_print_revdep(sym->rev_dep.expr, &gs, yes, in sym_warn_unmet_dep()
391 expr_gstr_print_revdep(sym->rev_dep.expr, &gs, mod, in sym_warn_unmet_dep()
406 void sym_calc_value(struct symbol *sym) in sym_calc_value() argument
412 if (!sym) in sym_calc_value()
415 if (sym->flags & SYMBOL_VALID) in sym_calc_value()
418 sym->flags |= SYMBOL_VALID; in sym_calc_value()
420 oldval = sym->curr; in sym_calc_value()
424 switch (sym->type) { in sym_calc_value()
439 sym->curr.val = sym->name; in sym_calc_value()
440 sym->curr.tri = no; in sym_calc_value()
443 sym->flags &= ~SYMBOL_WRITE; in sym_calc_value()
445 sym_calc_visibility(sym); in sym_calc_value()
447 if (sym->visible != no) in sym_calc_value()
448 sym->flags |= SYMBOL_WRITE; in sym_calc_value()
451 sym->curr = newval; in sym_calc_value()
453 switch (sym_get_type(sym)) { in sym_calc_value()
456 choice_menu = sym_get_choice_menu(sym); in sym_calc_value()
460 newval.tri = sym->curr.tri; in sym_calc_value()
462 if (sym->visible != no) { in sym_calc_value()
466 if (sym_has_value(sym)) { in sym_calc_value()
467 newval.tri = EXPR_AND(sym->def[S_DEF_USER].tri, in sym_calc_value()
468 sym->visible); in sym_calc_value()
472 if (sym->rev_dep.tri != no) in sym_calc_value()
473 sym->flags |= SYMBOL_WRITE; in sym_calc_value()
474 if (!sym_is_choice(sym)) { in sym_calc_value()
475 prop = sym_get_default_prop(sym); in sym_calc_value()
480 sym->flags |= SYMBOL_WRITE; in sym_calc_value()
482 if (sym->implied.tri != no) { in sym_calc_value()
483 sym->flags |= SYMBOL_WRITE; in sym_calc_value()
484 newval.tri = EXPR_OR(newval.tri, sym->implied.tri); in sym_calc_value()
486 sym->dir_dep.tri); in sym_calc_value()
490 if (sym->dir_dep.tri < sym->rev_dep.tri) in sym_calc_value()
491 sym_warn_unmet_dep(sym); in sym_calc_value()
492 newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); in sym_calc_value()
494 if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN) in sym_calc_value()
500 if (sym->visible != no && sym_has_value(sym)) { in sym_calc_value()
501 newval.val = sym->def[S_DEF_USER].val; in sym_calc_value()
504 prop = sym_get_default_prop(sym); in sym_calc_value()
508 sym->flags |= SYMBOL_WRITE; in sym_calc_value()
518 sym->curr = newval; in sym_calc_value()
519 sym_validate_range(sym); in sym_calc_value()
521 if (memcmp(&oldval, &sym->curr, sizeof(oldval))) { in sym_calc_value()
522 sym_set_changed(sym); in sym_calc_value()
523 if (modules_sym == sym) { in sym_calc_value()
529 if (sym_is_choice(sym)) in sym_calc_value()
530 sym->flags &= ~SYMBOL_WRITE; in sym_calc_value()
535 struct symbol *sym; in sym_clear_all_valid() local
537 for_all_symbols(sym) in sym_clear_all_valid()
538 sym->flags &= ~SYMBOL_VALID; in sym_clear_all_valid()
544 bool sym_tristate_within_range(const struct symbol *sym, tristate val) in sym_tristate_within_range() argument
546 int type = sym_get_type(sym); in sym_tristate_within_range()
548 if (sym->visible == no) in sym_tristate_within_range()
556 if (sym->visible <= sym->rev_dep.tri) in sym_tristate_within_range()
558 return val >= sym->rev_dep.tri && val <= sym->visible; in sym_tristate_within_range()
561 bool sym_set_tristate_value(struct symbol *sym, tristate val) in sym_set_tristate_value() argument
563 tristate oldval = sym_get_tristate_value(sym); in sym_set_tristate_value()
565 if (!sym_tristate_within_range(sym, val)) in sym_set_tristate_value()
568 if (!(sym->flags & SYMBOL_DEF_USER) || sym->def[S_DEF_USER].tri != val) { in sym_set_tristate_value()
569 sym->def[S_DEF_USER].tri = val; in sym_set_tristate_value()
570 sym->flags |= SYMBOL_DEF_USER; in sym_set_tristate_value()
571 sym_set_changed(sym); in sym_set_tristate_value()
586 void choice_set_value(struct menu *choice, struct symbol *sym) in choice_set_value() argument
594 if (!menu->sym) in choice_set_value()
597 if (menu->sym->visible == no) in choice_set_value()
600 val = menu->sym == sym ? yes : no; in choice_set_value()
602 if (menu->sym->curr.tri != val) in choice_set_value()
605 menu->sym->def[S_DEF_USER].tri = val; in choice_set_value()
606 menu->sym->flags |= SYMBOL_DEF_USER; in choice_set_value()
616 list_move(&menu->sym->choice_link, &choice->choice_members); in choice_set_value()
623 tristate sym_toggle_tristate_value(struct symbol *sym) in sym_toggle_tristate_value() argument
628 choice = sym_get_choice_menu(sym); in sym_toggle_tristate_value()
630 choice_set_value(choice, sym); in sym_toggle_tristate_value()
634 oldval = newval = sym_get_tristate_value(sym); in sym_toggle_tristate_value()
647 if (sym_set_tristate_value(sym, newval)) in sym_toggle_tristate_value()
653 bool sym_string_valid(struct symbol *sym, const char *str) in sym_string_valid() argument
657 switch (sym->type) { in sym_string_valid()
696 bool sym_string_within_range(struct symbol *sym, const char *str) in sym_string_within_range() argument
701 switch (sym->type) { in sym_string_within_range()
703 return sym_string_valid(sym, str); in sym_string_within_range()
705 if (!sym_string_valid(sym, str)) in sym_string_within_range()
707 prop = sym_get_range_prop(sym); in sym_string_within_range()
711 return val >= sym_get_range_val(prop->expr->left.sym, 10) && in sym_string_within_range()
712 val <= sym_get_range_val(prop->expr->right.sym, 10); in sym_string_within_range()
714 if (!sym_string_valid(sym, str)) in sym_string_within_range()
716 prop = sym_get_range_prop(sym); in sym_string_within_range()
720 return val >= sym_get_range_val(prop->expr->left.sym, 16) && in sym_string_within_range()
721 val <= sym_get_range_val(prop->expr->right.sym, 16); in sym_string_within_range()
726 return sym_tristate_within_range(sym, yes); in sym_string_within_range()
728 return sym_tristate_within_range(sym, mod); in sym_string_within_range()
730 return sym_tristate_within_range(sym, no); in sym_string_within_range()
738 bool sym_set_string_value(struct symbol *sym, const char *newval) in sym_set_string_value() argument
744 switch (sym->type) { in sym_set_string_value()
749 return sym_set_tristate_value(sym, yes); in sym_set_string_value()
751 return sym_set_tristate_value(sym, mod); in sym_set_string_value()
753 return sym_set_tristate_value(sym, no); in sym_set_string_value()
760 if (!sym_string_within_range(sym, newval)) in sym_set_string_value()
763 if (!(sym->flags & SYMBOL_DEF_USER)) { in sym_set_string_value()
764 sym->flags |= SYMBOL_DEF_USER; in sym_set_string_value()
765 sym_set_changed(sym); in sym_set_string_value()
768 oldval = sym->def[S_DEF_USER].val; in sym_set_string_value()
770 if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) { in sym_set_string_value()
772 sym->def[S_DEF_USER].val = val = xmalloc(size); in sym_set_string_value()
776 sym->def[S_DEF_USER].val = val = xmalloc(size); in sym_set_string_value()
794 const char *sym_get_string_default(struct symbol *sym) in sym_get_string_default() argument
801 sym_calc_visibility(sym); in sym_get_string_default()
806 prop = sym_get_default_prop(sym); in sym_get_string_default()
808 switch (sym->type) { in sym_get_string_default()
829 val = EXPR_OR(val, sym->rev_dep.tri); in sym_get_string_default()
833 if (!sym_is_choice_value(sym) && modules_sym->curr.tri == no) in sym_get_string_default()
837 if (sym->type == S_BOOLEAN && val == mod) in sym_get_string_default()
841 if (val < sym->implied.tri) in sym_get_string_default()
842 val = sym->implied.tri; in sym_get_string_default()
844 switch (sym->type) { in sym_get_string_default()
866 const char *sym_get_string_value(struct symbol *sym) in sym_get_string_value() argument
870 switch (sym->type) { in sym_get_string_value()
873 val = sym_get_tristate_value(sym); in sym_get_string_value()
886 return sym->curr.val; in sym_get_string_value()
889 bool sym_is_changeable(const struct symbol *sym) in sym_is_changeable() argument
891 return !sym_is_choice(sym) && sym->visible > sym->rev_dep.tri; in sym_is_changeable()
894 bool sym_is_choice_value(const struct symbol *sym) in sym_is_choice_value() argument
896 return !list_empty(&sym->choice_link); in sym_is_choice_value()
971 struct symbol *sym; member
994 exact1 = (s1->eo - s1->so) == strlen(s1->sym->name); in sym_rel_comp()
995 exact2 = (s2->eo - s2->so) == strlen(s2->sym->name); in sym_rel_comp()
1002 return strcmp(s1->sym->name, s2->sym->name); in sym_rel_comp()
1007 struct symbol *sym, **sym_arr = NULL; in sym_re_search() local
1020 for_all_symbols(sym) { in sym_re_search()
1021 if (sym->flags & SYMBOL_CONST || !sym->name) in sym_re_search()
1023 if (regexec(&re, sym->name, 1, match, 0)) in sym_re_search()
1033 sym_calc_value(sym); in sym_re_search()
1039 sym_match_arr[cnt++].sym = sym; in sym_re_search()
1047 sym_arr[i] = sym_match_arr[i].sym; in sym_re_search()
1066 struct symbol *sym; member
1071 static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym) in dep_stack_insert() argument
1077 stack->sym = sym; in dep_stack_insert()
1096 struct symbol *sym, *next_sym; in sym_check_print_recursive() local
1104 last_sym = choice->sym; in sym_check_print_recursive()
1108 if (stack->sym == last_sym) in sym_check_print_recursive()
1116 sym = stack->sym; in sym_check_print_recursive()
1117 next_sym = stack->next ? stack->next->sym : last_sym; in sym_check_print_recursive()
1120 if (stack->sym == last_sym) in sym_check_print_recursive()
1127 sym->name ? sym->name : "<choice>", in sym_check_print_recursive()
1129 } else if (stack->expr == &sym->dir_dep.expr) { in sym_check_print_recursive()
1131 sym->name ? sym->name : "<choice>", in sym_check_print_recursive()
1133 } else if (stack->expr == &sym->rev_dep.expr) { in sym_check_print_recursive()
1135 sym->name, next_sym->name); in sym_check_print_recursive()
1136 } else if (stack->expr == &sym->implied.expr) { in sym_check_print_recursive()
1138 sym->name, next_sym->name); in sym_check_print_recursive()
1141 sym->name ? sym->name : "<choice>", in sym_check_print_recursive()
1146 sym->name ? sym->name : "<choice>", in sym_check_print_recursive()
1163 struct symbol *sym; in sym_check_expr_deps() local
1170 sym = sym_check_expr_deps(e->left.expr); in sym_check_expr_deps()
1171 if (sym) in sym_check_expr_deps()
1172 return sym; in sym_check_expr_deps()
1182 sym = sym_check_deps(e->left.sym); in sym_check_expr_deps()
1183 if (sym) in sym_check_expr_deps()
1184 return sym; in sym_check_expr_deps()
1185 return sym_check_deps(e->right.sym); in sym_check_expr_deps()
1187 return sym_check_deps(e->left.sym); in sym_check_expr_deps()
1196 static struct symbol *sym_check_sym_deps(struct symbol *sym) in sym_check_sym_deps() argument
1202 dep_stack_insert(&stack, sym); in sym_check_sym_deps()
1204 stack.expr = &sym->dir_dep.expr; in sym_check_sym_deps()
1205 sym2 = sym_check_expr_deps(sym->dir_dep.expr); in sym_check_sym_deps()
1209 stack.expr = &sym->rev_dep.expr; in sym_check_sym_deps()
1210 sym2 = sym_check_expr_deps(sym->rev_dep.expr); in sym_check_sym_deps()
1214 stack.expr = &sym->implied.expr; in sym_check_sym_deps()
1215 sym2 = sym_check_expr_deps(sym->implied.expr); in sym_check_sym_deps()
1221 for (prop = sym->prop; prop; prop = prop->next) { in sym_check_sym_deps()
1228 if (prop->type != P_DEFAULT || sym_is_choice(sym)) in sym_check_sym_deps()
1254 if (menu->sym) in sym_check_choice_deps()
1255 menu->sym->flags |= SYMBOL_CHECK | SYMBOL_CHECKED; in sym_check_choice_deps()
1265 if (!menu->sym) in sym_check_choice_deps()
1267 sym2 = sym_check_sym_deps(menu->sym); in sym_check_choice_deps()
1273 if (menu->sym) in sym_check_choice_deps()
1274 menu->sym->flags &= ~SYMBOL_CHECK; in sym_check_choice_deps()
1289 struct symbol *sym_check_deps(struct symbol *sym) in sym_check_deps() argument
1294 if (sym->flags & SYMBOL_CHECK) { in sym_check_deps()
1295 sym_check_print_recursive(sym); in sym_check_deps()
1296 return sym; in sym_check_deps()
1298 if (sym->flags & SYMBOL_CHECKED) in sym_check_deps()
1301 choice = sym_get_choice_menu(sym); in sym_check_deps()
1306 dep_stack_insert(&stack, sym); in sym_check_deps()
1307 sym2 = sym_check_deps(choice->sym); in sym_check_deps()
1309 } else if (sym_is_choice(sym)) { in sym_check_deps()
1310 sym2 = sym_check_choice_deps(sym); in sym_check_deps()
1312 sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED); in sym_check_deps()
1313 sym2 = sym_check_sym_deps(sym); in sym_check_deps()
1314 sym->flags &= ~SYMBOL_CHECK; in sym_check_deps()
1323 return prop->expr->left.sym; in prop_get_symbol()