Lines Matching refs:sym
47 void menu_add_entry(struct symbol *sym)
53 menu->sym = sym;
61 if (sym)
62 menu_add_symbol(P_SYMBOL, sym, NULL);
98 if (e->left.sym == &symbol_mod)
114 struct symbol *sym = current_entry->sym;
116 if (sym->type == type)
118 if (sym->type == S_UNKNOWN) {
119 sym->type = type;
124 sym->name ? sym->name : "<choice>",
125 sym_type_name(sym->type), sym_type_name(type));
143 if (current_entry->sym) {
146 for (propp = ¤t_entry->sym->prop;
209 void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)
211 menu_add_prop(type, expr_alloc_symbol(sym), dep);
218 current_entry->sym->name, modules_sym->name);
219 modules_sym = current_entry->sym;
225 sym_defconfig_list = current_entry->sym;
226 else if (sym_defconfig_list != current_entry->sym)
233 current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y;
236 static int menu_validate_number(struct symbol *sym, struct symbol *sym2)
239 (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name));
242 static void sym_check_prop(struct symbol *sym)
248 for (prop = sym->prop; prop; prop = prop->next) {
251 if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) &&
255 " must be a single symbol", sym->name);
259 if (sym->type == S_HEX || sym->type == S_INT) {
260 if (!menu_validate_number(sym, sym2))
263 sym->name);
265 if (sym_is_choice(sym)) {
270 prop_get_symbol(choice_prop) != sym)
280 if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE)
283 "not bool or tristate", sym->name, use);
293 if (sym->type != S_INT && sym->type != S_HEX)
296 if (!menu_validate_number(sym, prop->expr->left.sym) ||
297 !menu_validate_number(sym, prop->expr->right.sym))
309 struct symbol *sym;
313 sym = parent->sym;
320 if (sym && sym_is_choice(sym)) {
321 if (sym->type == S_UNKNOWN) {
325 if (menu->sym && menu->sym->type != S_UNKNOWN) {
326 menu_set_type(menu->sym->type);
334 if (menu->sym && menu->sym->type == S_UNKNOWN)
335 menu_set_type(sym->type);
344 parentdep = expr_alloc_symbol(sym);
362 if (menu->sym)
367 prop = menu->sym->prop;
404 if (menu->sym && menu->sym->type != S_TRISTATE)
415 expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
419 expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
424 if (sym && sym_is_choice(sym))
433 } else if (sym) {
435 * Automatic submenu creation. If sym is a symbol and A, B, C,
437 * all depend on sym, then the following menu structure is
440 * sym
449 * sym
460 /* Examine consecutive elements after sym */
464 if (!expr_contains_symbol(dep, sym))
467 if (expr_depends_symbol(dep, sym))
472 * Also consider it a dependency on sym if our
473 * dependencies contain sym and are a "superset" of
474 * sym's dependencies, e.g. '(sym || Q) && R' when sym
504 sym->dir_dep.expr = expr_alloc_or(sym->dir_dep.expr, parent->dep);
507 if (sym && sym_is_choice(sym) &&
508 menu->sym && !sym_is_choice_value(menu->sym)) {
510 menu->sym->flags |= SYMBOL_CHOICEVAL;
513 for (prop = menu->sym->prop; prop; prop = prop->next) {
520 prop->menu->parent->sym != sym)
529 if (sym->type == S_TRISTATE && menu->sym->type != S_TRISTATE) {
530 basedep = expr_alloc_comp(E_EQUAL, sym, &symbol_yes);
532 for (prop = menu->sym->prop; prop; prop = prop->next) {
539 menu_add_symbol(P_CHOICE, sym, NULL);
540 prop = sym_get_choice_prop(sym);
544 (*ep)->right.sym = menu->sym;
587 if (sym && !(sym->flags & SYMBOL_WARNED)) {
588 if (sym->type == S_UNKNOWN)
591 if (sym_is_choice(sym) && !parent->prompt)
595 sym_check_prop(sym);
596 sym->flags |= SYMBOL_WARNED;
608 if (sym && !sym_is_optional(sym) && parent->prompt) {
609 sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr,
641 struct symbol *sym;
652 sym = menu->sym;
653 if (sym) {
654 sym_calc_value(sym);
662 if (!sym || sym_get_tristate_value(menu->sym) == no)
667 if (sym)
668 sym->flags |= SYMBOL_DEF_USER;
680 else if (menu->sym)
681 return menu->sym->name;
790 if (menu->sym) {
791 str_printf(r, " (%s [=%s])", menu->sym->name ?
792 menu->sym->name : "<choice>",
793 sym_get_string_value(menu->sym));
800 static void get_symbol_props_str(struct gstr *r, struct symbol *sym,
806 for_all_properties(sym, prop, tok) {
821 static void get_symbol_str(struct gstr *r, struct symbol *sym,
826 if (sym && sym->name) {
827 str_printf(r, "Symbol: %s [=%s]\n", sym->name,
828 sym_get_string_value(sym));
829 str_printf(r, "Type : %s\n", sym_type_name(sym->type));
830 if (sym->type == S_INT || sym->type == S_HEX) {
831 prop = sym_get_range_prop(sym);
841 for_all_properties(sym, prop, P_SYMBOL) {
848 for_all_properties(sym, prop, P_SYMBOL) {
855 get_symbol_props_str(r, sym, P_SELECT, "Selects: ");
856 if (sym->rev_dep.expr) {
857 expr_gstr_print_revdep(sym->rev_dep.expr, r, yes, "Selected by [y]:\n");
858 expr_gstr_print_revdep(sym->rev_dep.expr, r, mod, "Selected by [m]:\n");
859 expr_gstr_print_revdep(sym->rev_dep.expr, r, no, "Selected by [n]:\n");
862 get_symbol_props_str(r, sym, P_IMPLY, "Implies: ");
863 if (sym->implied.expr) {
864 expr_gstr_print_revdep(sym->implied.expr, r, yes, "Implied by [y]:\n");
865 expr_gstr_print_revdep(sym->implied.expr, r, mod, "Implied by [m]:\n");
866 expr_gstr_print_revdep(sym->implied.expr, r, no, "Implied by [n]:\n");
874 struct symbol *sym;
878 for (i = 0; sym_arr && (sym = sym_arr[i]); i++)
879 get_symbol_str(&res, sym, head);
888 struct symbol *sym = menu->sym;
892 if (sym->name)
893 str_printf(help, "%s%s:\n\n", CONFIG_, sym->name);
897 if (sym)
898 get_symbol_str(help, sym, NULL);