Lines Matching refs:self
104 def __init__(self, filename="Kconfig", base_dir=None, print_warnings=True, argument
138 self.syms = {}
141 self.syms_iter = self.syms.values
143 self.syms_iter = self.syms.itervalues
148 self.kconfig_syms = []
152 self.named_choices = {}
155 self.choices = []
156 self.menus = []
157 self.comments = []
163 sym.config = self
167 self.syms[name] = sym
172 self.n = register_special_symbol(TRISTATE, "n", "n")
173 self.m = register_special_symbol(TRISTATE, "m", "m")
174 self.y = register_special_symbol(TRISTATE, "y", "y")
180 self.defconfig_sym = None
183 self.arch = os.environ.get("ARCH")
184 self.srcarch = os.environ.get("SRCARCH")
187 self.srctree = os.environ.get("srctree")
188 if self.srctree is None:
189 self.srctree = "."
191 self.filename = filename
193 self.base_dir = self.srctree
195 self.base_dir = os.path.expandvars(base_dir)
198 self.mainmenu_text = None
201 self.config_filename = None
203 self.config_header = None
205 self.print_warnings = print_warnings
206 self.print_undef_assign = print_undef_assign
207 self._warnings = []
214 self.end_line = None
215 self.end_line_tokens = None
218 self._cur_item = None
219 self._line = None
220 self._filename = None
221 self._linenr = None
222 self._transform_m = None
225 self.top_block = self._parse_file(filename, None, None, None)
228 self._build_dep()
230 def get_arch(self): argument
235 return self.arch
237 def get_srcarch(self): argument
242 return self.srcarch
244 def get_srctree(self): argument
249 return self.srctree
251 def get_base_dir(self): argument
254 return self.base_dir
256 def get_kconfig_filename(self): argument
259 return self.filename
261 def get_config_filename(self): argument
264 return self.config_filename
266 def get_config_header(self): argument
276 return self.config_header
278 def get_mainmenu_text(self): argument
282 return None if self.mainmenu_text is None else \
283 self._expand_sym_refs(self.mainmenu_text)
285 def get_defconfig_filename(self): argument
305 if self.defconfig_sym is None:
307 for filename, cond_expr in self.defconfig_sym.def_exprs:
308 if self._eval_expr(cond_expr) == "y":
309 filename = self._expand_sym_refs(filename)
312 srctree_filename = os.path.normpath(self.srctree + "/" +
320 def get_symbol(self, name): argument
325 return self.syms.get(name)
327 def __getitem__(self, name): argument
330 return self.syms[name]
332 def get_symbols(self, all_symbols=True): argument
350 return list(self.syms.values()) if all_symbols else self.kconfig_syms
352 def __iter__(self): argument
363 return iter(self.kconfig_syms)
365 def get_choices(self): argument
368 return self.choices
370 def get_menus(self): argument
373 return self.menus
375 def get_comments(self): argument
378 return self.comments
380 def get_top_level_items(self): argument
385 return self.top_block
387 def load_config(self, filename, replace=True): argument
407 self._warnings = []
412 self.config_filename = filename
422 self.config_header = None
426 self.config_header = ""
428 self.config_header += line_feeder.get_next()[1:]
430 if self.config_header.endswith("\n"):
431 self.config_header = self.config_header[:-1]
438 self._warn('overriding the value of {0}. '
450 self.unset_user_values()
452 self._invalidate_all()
457 return self._warnings
474 if name in self.syms:
475 sym = self.syms[name]
483 self._warn("assignment to {0} changes mode of "
491 if self.print_undef_assign:
500 if name in self.syms:
501 sym = self.syms[name]
509 def write_config(self, filename, header=None): argument
521 for sym in self.syms_iter():
532 _make_block_conf(self.top_block, conf_strings.append)
536 def eval(self, s): argument
555 return self._eval_expr(self._parse_expr(self._tokenize(s, True), # Feed
559 def unset_user_values(self): argument
562 for sym in self.syms_iter():
565 def set_print_warnings(self, print_warnings): argument
571 self.print_warnings = print_warnings
573 def set_print_undef_assign(self, print_undef_assign): argument
578 self.print_undef_assign = print_undef_assign
580 def __str__(self): argument
584 self.filename,
586 self.base_dir,
588 ("(not set)" if self.arch is None else self.arch),
590 ("(not set)" if self.srcarch is None else
591 self.srcarch),
594 self.srctree,
597 if self.config_filename is None else
598 self.config_filename),
600 BOOL_STR[self.print_warnings],
602 BOOL_STR[self.print_undef_assign])
612 def _parse_file(self, filename, parent, deps, visible_if_deps, res=None): argument
615 return self._parse_block(_FileFeed(filename), None, parent, deps,
618 def _parse_block(self, line_feeder, end_marker, parent, deps, argument
646 if self.end_line is not None:
647 line = self.end_line
648 tokens = self.end_line_tokens
651 self.end_line = None
652 self.end_line_tokens = None
661 tokens = self._tokenize(line, False, line_feeder.filename,
685 self.kconfig_syms.append(sym)
688 self._parse_properties(line_feeder, sym, deps, visible_if_deps)
692 exp_kconfig_file = self._expand_sym_refs(kconfig_file)
693 f = os.path.join(self.base_dir, exp_kconfig_file)
702 self.base_dir))
704 self._parse_file(f, parent, deps, visible_if_deps, block)
715 dep_expr = self._parse_expr(tokens, None, line,
719 self._parse_block(line_feeder, T_ENDIF, parent,
726 comment.config = self
732 self.comments.append(comment)
735 self._parse_properties(line_feeder, comment, deps,
741 menu.config = self
747 self.menus.append(menu)
751 self._parse_properties(line_feeder, menu, deps,
753 menu.block = self._parse_block(line_feeder, T_ENDMENU, menu,
762 self.choices.append(choice)
765 choice = self.named_choices.get(name)
769 self.named_choices[name] = choice
770 self.choices.append(choice)
772 choice.config = self
779 self._parse_properties(line_feeder, choice, deps,
781 choice.block = self._parse_block(line_feeder, T_ENDCHOICE,
803 if self.mainmenu_text is not None:
804 self._warn("overriding 'mainmenu' text. "
806 .format(self.mainmenu_text, text),
808 self.mainmenu_text = text
814 def _parse_properties(self, line_feeder, stmt, deps, visible_if_deps): argument
822 val = self._parse_expr(tokens, stmt, line, filename, linenr, False)
824 return (val, self._parse_expr(tokens, stmt, line, filename,
847 tokens = self._tokenize(line, False, filename, linenr)
861 parsed_deps = self._parse_expr(tokens, stmt, line, filename,
908 self._parse_expr(tokens, stmt, line,
944 self._parse_expr(tokens, stmt, line,
963 self._warn("The symbol {0} references the "
980 self.defconfig_sym = stmt
989 self._warn("the 'modules' option is not supported. "
1019 parsed_deps = self._parse_expr(tokens, stmt, line, filename,
1034 self.end_line = line
1035 self.end_line_tokens = tokens
1096 def _parse_expr(self, feed, cur_item, line, filename=None, linenr=None, argument
1133 self._cur_item = cur_item
1134 self._transform_m = transform_m
1135 self._line = line
1136 self._filename = filename
1137 self._linenr = linenr
1139 return self._parse_expr_rec(feed)
1141 def _parse_expr_rec(self, feed): argument
1142 or_term = self._parse_or_term(feed)
1147 or_terms = [or_term, self._parse_or_term(feed)]
1149 or_terms.append(self._parse_or_term(feed))
1152 def _parse_or_term(self, feed): argument
1153 and_term = self._parse_factor(feed)
1158 and_terms = [and_term, self._parse_factor(feed)]
1160 and_terms.append(self._parse_factor(feed))
1163 def _parse_factor(self, feed): argument
1167 if self._cur_item is not None and isinstance(token, Symbol):
1168 self._cur_item.referenced_syms.add(token)
1175 if self._transform_m and (token is self.m or token == "m"):
1176 return (AND, ["m", self._sym_lookup("MODULES")])
1181 if self._cur_item is not None and isinstance(token_2, Symbol):
1182 self._cur_item.referenced_syms.add(token_2)
1186 return (NOT, self._parse_factor(feed))
1189 expr_parse = self._parse_expr_rec(feed)
1191 _parse_error(self._line, "missing end parenthesis",
1192 self._filename, self._linenr)
1195 _parse_error(self._line, "malformed expression", self._filename,
1196 self._linenr)
1198 def _tokenize(self, s, for_eval, filename=None, linenr=None): argument
1271 sym = self._sym_lookup(name, for_eval)
1358 def _sym_lookup(self, name, for_eval=False): argument
1363 if name in self.syms:
1364 return self.syms[name]
1367 new_sym.config = self
1370 self._warn("no symbol {0} in configuration".format(name))
1372 self.syms[name] = new_sym
1379 def _eval_expr(self, expr): argument
1386 res = self._eval_expr_rec(expr)
1393 modules_sym = self.syms.get("MODULES")
1398 def _eval_expr_rec(self, expr): argument
1414 ev = self._eval_expr_rec(subexpr)
1425 ev = self._eval_expr_rec(expr[1])
1433 ev = self._eval_expr_rec(subexpr)
1452 def _eval_min(self, e1, e2): argument
1455 e1_eval = self._eval_expr(e1)
1456 e2_eval = self._eval_expr(e2)
1459 def _eval_max(self, e1, e2): argument
1462 e1_eval = self._eval_expr(e1)
1463 e2_eval = self._eval_expr(e2)
1470 def _build_dep(self): argument
1491 for sym in self.syms_iter():
1513 def _eq_to_sym(self, eq): argument
1519 if item is self.y: return "y"
1520 if item is self.m: return "m"
1521 if item is self.n: return "n"
1537 def _expr_depends_on(self, expr, sym): argument
1551 return self._eq_to_sym(expr) is sym
1560 def _invalidate_all(self): argument
1561 for sym in self.syms_iter():
1568 def _expand_sym_refs(self, s): argument
1578 sym = self.syms.get(sym_name)
1585 def _expr_val_str(self, expr, no_value_str="(none)", argument
1603 val = self._eval_expr(expr)
1607 def _get_sym_or_choice_str(self, sc): argument
1633 self._expr_val_str(cond_expr)))
1645 self._expr_val_str(sc.deps_from_containing,
1666 self._expr_val_str(cond_expr)))
1675 row_str = " " + self._expr_val_str(val_expr, "(none)",
1679 self._expr_val_str(cond_expr))
1693 self._expr_val_str(cond_expr)))
1716 else " " + self._expr_val_str(sc.rev_dep),
1742 self._expr_val_str(cond_expr)))
1769 def _warn(self, msg, filename=None, linenr=None): argument
1772 if self.print_warnings:
1774 self._warnings.append(msg)
1781 def is_symbol(self): argument
1784 return isinstance(self, Symbol)
1786 def is_choice(self): argument
1789 return isinstance(self, Choice)
1791 def is_menu(self): argument
1794 return isinstance(self, Menu)
1796 def is_comment(self): argument
1799 return isinstance(self, Comment)
1812 def get_config(self): argument
1814 return self.config
1816 def get_name(self): argument
1818 return self.name
1820 def get_type(self): argument
1827 return self.type
1829 def get_prompts(self): argument
1837 return [prompt for prompt, _ in self.orig_prompts]
1839 def get_help(self): argument
1842 return self.help
1844 def get_parent(self): argument
1849 return self.parent
1851 def get_def_locations(self): argument
1864 return self.def_locations
1866 def get_ref_locations(self): argument
1889 return self.ref_locations
1891 def get_value(self): argument
1895 if self.cached_val is not None:
1896 return self.cached_val
1901 if self.type == UNKNOWN:
1902 self.cached_val = self.name
1903 return self.name
1905 new_val = DEFAULT_VALUE[self.type]
1906 vis = _get_visibility(self)
1909 self.write_to_conf = False
1911 if self.type == BOOL or self.type == TRISTATE:
1914 if self.is_choice_sym:
1916 choice = self.parent
1919 self.write_to_conf = (mode != "n")
1922 if choice.get_selection() is self:
1927 if self.user_val == "m" or self.user_val == "y":
1936 self.write_to_conf = True
1937 if self.user_val is not None:
1938 new_val = self.config._eval_min(self.user_val, vis)
1942 for val_expr, cond_expr in self.def_exprs:
1943 cond_eval = self.config._eval_expr(cond_expr)
1945 self.write_to_conf = True
1946 new_val = self.config._eval_min(val_expr,
1951 rev_dep_val = self.config._eval_expr(self.rev_dep)
1953 self.write_to_conf = True
1954 new_val = self.config._eval_max(new_val, rev_dep_val)
1957 if new_val == "m" and self.type == BOOL:
1960 elif self.type == INT or self.type == HEX:
1966 base = 16 if self.type == HEX else 10
1968 for l, h, cond_expr in self.ranges:
1969 if self.config._eval_expr(cond_expr) != "n":
1982 self.write_to_conf = True
1984 if self.user_val is not None and \
1985 _is_base_n(self.user_val, base) and \
1987 low <= int(self.user_val, base) <= high):
1994 new_val = self.user_val
1997 for val_expr, cond_expr in self.def_exprs:
1998 if self.config._eval_expr(cond_expr) != "n":
1999 self.write_to_conf = True
2020 self.type == HEX else str(clamped_val))
2028 new_val = (hex(low) if self.type == HEX else str(low))
2030 elif self.type == STRING:
2034 self.write_to_conf = True
2035 if self.user_val is not None:
2036 new_val = self.user_val
2040 for val_expr, cond_expr in self.def_exprs:
2041 if self.config._eval_expr(cond_expr) != "n":
2042 self.write_to_conf = True
2046 self.cached_val = new_val
2049 def get_user_value(self): argument
2053 return self.user_val
2055 def get_upper_bound(self): argument
2067 if self.type != BOOL and self.type != TRISTATE:
2069 rev_dep = self.config._eval_expr(self.rev_dep)
2071 if rev_dep == "m" and self.type == BOOL:
2073 vis = _get_visibility(self)
2078 def get_lower_bound(self): argument
2090 if self.type != BOOL and self.type != TRISTATE:
2092 rev_dep = self.config._eval_expr(self.rev_dep)
2094 if rev_dep == "m" and self.type == BOOL:
2096 if TRI_TO_INT[_get_visibility(self)] > TRI_TO_INT[rev_dep]:
2100 def get_assignable_values(self): argument
2113 if self.type != BOOL and self.type != TRISTATE:
2115 rev_dep = self.config._eval_expr(self.rev_dep)
2117 if rev_dep == "m" and self.type == BOOL:
2120 TRI_TO_INT[_get_visibility(self)] + 1]
2123 def get_visibility(self): argument
2165 return _get_visibility(self)
2167 def get_referenced_symbols(self, refs_from_enclosing=False): argument
2182 return self.all_referenced_syms if refs_from_enclosing else \
2183 self.referenced_syms
2185 def get_selected_symbols(self): argument
2190 return self.selected_syms
2192 def set_user_value(self, v): argument
2215 self._set_user_value_no_invalidate(v, False)
2219 if self.name == "MODULES":
2220 self.config._invalidate_all()
2223 self._invalidate()
2224 self._invalidate_dependent()
2226 def unset_user_value(self): argument
2230 self._unset_user_value_no_recursive_invalidate()
2231 self._invalidate_dependent()
2233 def is_modifiable(self): argument
2243 if self.is_special_:
2245 if self.type == BOOL or self.type == TRISTATE:
2246 rev_dep = self.config._eval_expr(self.rev_dep)
2248 if rev_dep == "m" and self.type == BOOL:
2250 return TRI_TO_INT[_get_visibility(self)] > TRI_TO_INT[rev_dep]
2251 return _get_visibility(self) != "n"
2253 def is_defined(self): argument
2256 return self.is_defined_
2258 def is_special(self): argument
2261 return self.is_special_
2263 def is_from_environment(self): argument
2265 return self.is_from_env
2267 def has_ranges(self): argument
2270 return bool(self.ranges)
2272 def is_choice_symbol(self): argument
2275 return self.is_choice_sym
2277 def is_choice_selection(self): argument
2282 return self.is_choice_sym and self.parent.get_selection() is self
2284 def is_allnoconfig_y(self): argument
2286 return self.allnoconfig_y
2288 def __str__(self): argument
2290 return self.config._get_sym_or_choice_str(self)
2296 def __init__(self): argument
2300 self.name = None
2301 self.type = UNKNOWN
2302 self.prompts = []
2303 self.def_exprs = [] # 'default' properties
2304 self.ranges = [] # 'range' properties (for int and hex)
2305 self.help = None # Help text
2306 self.rev_dep = "n" # Reverse (select-related) dependencies
2307 self.config = None
2308 self.parent = None
2310 self.user_val = None # Value set by user
2314 self.orig_prompts = []
2315 self.orig_def_exprs = []
2316 self.orig_selects = []
2319 self.deps_from_containing = None
2322 self.referenced_syms = set()
2325 self.selected_syms = set()
2328 self.all_referenced_syms = set()
2333 self.menu_dep = None
2336 self.def_locations = []
2337 self.ref_locations = []
2344 self.dep = set()
2349 self.cached_val = None
2351 self.cached_visibility = None
2354 self.cached_deps = None
2360 self.is_defined_ = False
2362 self.write_to_conf = False
2366 self.already_written = False
2369 self.is_choice_sym = False
2375 self.is_special_ = False
2377 self.is_from_env = False
2379 self.allnoconfig_y = False
2381 def _invalidate(self): argument
2382 if self.is_special_:
2385 if self.is_choice_sym:
2386 self.parent._invalidate()
2388 self.cached_val = None
2389 self.cached_visibility = None
2391 def _invalidate_dependent(self): argument
2392 for sym in self._get_dependent():
2395 def _set_user_value_no_invalidate(self, v, suppress_load_warnings): argument
2404 if self.is_special_:
2405 if self.is_from_env:
2406 self.config._warn('attempt to assign the value "{0}" to the '
2409 .format(v, self.name))
2411 self.config._warn('attempt to assign the value "{0}" to the '
2413 .format(v, self.name))
2416 if not self.is_defined_:
2417 filename, linenr = self.ref_locations[0]
2418 if self.config.print_undef_assign:
2422 .format(v, self.name, filename, linenr))
2426 if not ((self.type == BOOL and (v == "y" or v == "n") ) or
2427 (self.type == TRISTATE and (v == "y" or v == "m" or
2429 (self.type == STRING ) or
2430 (self.type == INT and _is_base_n(v, 10) ) or
2431 (self.type == HEX and _is_base_n(v, 16) )):
2432 self.config._warn('the value "{0}" is invalid for {1}, which has '
2434 .format(v, self.name, TYPENAME[self.type]))
2437 if not self.prompts and not suppress_load_warnings:
2438 self.config._warn('assigning "{0}" to the symbol {1} which '
2441 .format(v, self.name))
2443 self.user_val = v
2445 if self.is_choice_sym and (self.type == BOOL or self.type == TRISTATE):
2446 choice = self.parent
2448 choice.user_val = self
2454 def _unset_user_value_no_recursive_invalidate(self): argument
2455 self._invalidate()
2456 self.user_val = None
2458 if self.is_choice_sym:
2459 self.parent._unset_user_value()
2461 def _make_conf(self, append_fn): argument
2462 if self.already_written:
2465 self.already_written = True
2468 val = self.get_value()
2469 if not self.write_to_conf:
2472 if self.type == BOOL or self.type == TRISTATE:
2474 append_fn("CONFIG_{0}={1}".format(self.name, val))
2476 append_fn("# CONFIG_{0} is not set".format(self.name))
2478 elif self.type == INT or self.type == HEX:
2479 append_fn("CONFIG_{0}={1}".format(self.name, val))
2481 elif self.type == STRING:
2484 .format(self.name,
2489 'type "{0}".'.format(self.type))
2491 def _get_dependent(self): argument
2496 if self.cached_deps is not None:
2497 return self.cached_deps
2499 res = set(self.dep)
2500 for s in self.dep:
2503 if self.is_choice_sym:
2506 for sibling in self.parent.actual_symbols:
2507 if sibling is not self:
2513 self.cached_deps = res
2516 def _has_auto_menu_dep_on(self, on): argument
2518 if not isinstance(self.parent, Choice):
2522 if not self.prompts:
2525 return self.menu_dep is not None and \
2526 self.config._expr_depends_on(self.menu_dep, on)
2528 for _, cond_expr in self.prompts:
2529 if self.config._expr_depends_on(cond_expr, on):
2542 def get_config(self): argument
2544 return self.config
2546 def get_title(self): argument
2548 return self.title
2550 def get_parent(self): argument
2555 return self.parent
2557 def get_location(self): argument
2560 return (self.filename, self.linenr)
2562 def get_items(self, recursive=False): argument
2571 return self.block
2574 for item in self.block:
2582 def get_symbols(self, recursive=False): argument
2589 return [item for item in self.get_items(recursive) if
2592 def get_visibility(self): argument
2595 return self.config._eval_expr(self.dep_expr)
2597 def get_visible_if_visibility(self): argument
2600 return self.config._eval_expr(self.visible_if_expr)
2602 def get_referenced_symbols(self, refs_from_enclosing=False): argument
2604 return self.all_referenced_syms if refs_from_enclosing else \
2605 self.referenced_syms
2607 def __str__(self): argument
2609 depends_on_str = self.config._expr_val_str(self.orig_deps,
2611 visible_if_str = self.config._expr_val_str(self.visible_if_expr,
2615 self.config._expr_val_str(self.deps_from_containing,
2619 "Title : " + self.title,
2625 "Location: {0}:{1}".format(self.filename, self.linenr))
2631 def __init__(self): argument
2635 self.title = None
2636 self.dep_expr = None
2637 self.visible_if_expr = None
2638 self.block = None
2639 self.config = None
2640 self.parent = None
2644 self.orig_deps = None
2647 self.deps_from_containing = None
2650 self.referenced_syms = set()
2653 self.all_referenced_syms = None
2655 self.filename = None
2656 self.linenr = None
2658 def _make_conf(self, append_fn): argument
2659 if self.config._eval_expr(self.dep_expr) != "n" and \
2660 self.config._eval_expr(self.visible_if_expr) != "n":
2661 append_fn("\n#\n# {0}\n#".format(self.title))
2662 _make_block_conf(self.block, append_fn)
2689 def get_config(self): argument
2691 return self.config
2693 def get_name(self): argument
2697 return self.name
2699 def get_type(self): argument
2701 return self.type
2703 def get_prompts(self): argument
2712 return [prompt for prompt, _ in self.orig_prompts]
2714 def get_help(self): argument
2717 return self.help
2719 def get_parent(self): argument
2724 return self.parent
2726 def get_def_locations(self): argument
2732 return self.def_locations
2734 def get_selection(self): argument
2738 if self.cached_selection is not None:
2739 if self.cached_selection == NO_SELECTION:
2741 return self.cached_selection
2743 if self.get_mode() != "y":
2744 return self._cache_ret(None)
2747 if self.user_val is not None and _get_visibility(self.user_val) == "y":
2748 return self._cache_ret(self.user_val)
2750 if self.optional:
2751 return self._cache_ret(None)
2753 return self._cache_ret(self.get_selection_from_defaults())
2755 def get_selection_from_defaults(self): argument
2759 if not self.actual_symbols:
2762 for symbol, cond_expr in self.def_exprs:
2763 if self.config._eval_expr(cond_expr) != "n":
2767 chosen_symbol = self.actual_symbols[0]
2773 for sym in self.actual_symbols:
2778 def get_user_selection(self): argument
2781 return self.user_val
2783 def get_items(self): argument
2788 return self.block
2790 def get_symbols(self): argument
2805 return self.actual_symbols
2807 def get_referenced_symbols(self, refs_from_enclosing=False): argument
2809 return self.all_referenced_syms if refs_from_enclosing else \
2810 self.referenced_syms
2812 def get_visibility(self): argument
2817 return _get_visibility(self)
2819 def get_mode(self): argument
2822 minimum_mode = "n" if self.optional else "m"
2823 mode = self.user_mode if self.user_mode is not None else minimum_mode
2824 mode = self.config._eval_min(mode, _get_visibility(self))
2827 if mode == "m" and self.type == BOOL:
2832 def is_optional(self): argument
2835 return self.optional
2837 def __str__(self): argument
2840 return self.config._get_sym_or_choice_str(self)
2846 def __init__(self): argument
2850 self.name = None # Yes, choices can be named
2851 self.type = UNKNOWN
2852 self.prompts = []
2853 self.def_exprs = [] # 'default' properties
2854 self.help = None # Help text
2855 self.block = None # List of contained items
2856 self.config = None
2857 self.parent = None
2859 self.user_val = None
2860 self.user_mode = None
2866 self.actual_symbols = []
2870 self.orig_prompts = []
2871 self.orig_def_exprs = []
2874 self.deps_from_containing = None
2877 self.referenced_syms = set()
2880 self.all_referenced_syms = set()
2883 self.def_locations = []
2886 self.cached_selection = None
2887 self.cached_visibility = None
2889 self.optional = False
2891 def _determine_actual_symbols(self): argument
2912 for item in self.block:
2927 self.actual_symbols.append(item)
2930 def _cache_ret(self, selection): argument
2935 self.cached_selection = NO_SELECTION
2937 self.cached_selection = selection
2941 def _invalidate(self): argument
2942 self.cached_selection = None
2943 self.cached_visibility = None
2945 def _unset_user_value(self): argument
2946 self._invalidate()
2947 self.user_val = None
2948 self.user_mode = None
2950 def _make_conf(self, append_fn): argument
2951 _make_block_conf(self.block, append_fn)
2961 def get_config(self): argument
2963 return self.config
2965 def get_text(self): argument
2967 return self.text
2969 def get_parent(self): argument
2974 return self.parent
2976 def get_location(self): argument
2979 return (self.filename, self.linenr)
2981 def get_visibility(self): argument
2984 return self.config._eval_expr(self.dep_expr)
2986 def get_referenced_symbols(self, refs_from_enclosing=False): argument
2988 return self.all_referenced_syms if refs_from_enclosing else \
2989 self.referenced_syms
2991 def __str__(self): argument
2994 dep_str = self.config._expr_val_str(self.orig_deps,
2998 self.config._expr_val_str(self.deps_from_containing,
3002 "Text: " + str(self.text),
3007 "Location: {0}:{1}".format(self.filename, self.linenr))
3013 def __init__(self): argument
3017 self.text = None
3018 self.dep_expr = None
3019 self.config = None
3020 self.parent = None
3024 self.orig_deps = None
3027 self.deps_from_containing = None
3030 self.referenced_syms = set()
3033 self.all_referenced_syms = None
3035 self.filename = None
3036 self.linenr = None
3038 def _make_conf(self, append_fn): argument
3039 if self.config._eval_expr(self.dep_expr) != "n":
3040 append_fn("\n#\n# {0}\n#".format(self.text))
3087 def __init__(self, items): argument
3088 self.items = items
3089 self.length = len(self.items)
3090 self.i = 0
3092 def get_next(self): argument
3093 if self.i >= self.length:
3095 item = self.items[self.i]
3096 self.i += 1
3099 def peek_next(self): argument
3100 return None if self.i >= self.length else self.items[self.i]
3102 def check(self, token): argument
3105 if self.i < self.length and self.items[self.i] == token:
3106 self.i += 1
3110 def unget_all(self): argument
3111 self.i = 0
3122 def __init__(self, filename): argument
3123 self.filename = _clean_up_path(filename)
3127 self.lines = f.readlines()
3128 self.length = len(self.lines)
3129 self.linenr = 0
3131 def get_next(self): argument
3132 if self.linenr >= self.length:
3134 line = self.lines[self.linenr]
3135 self.linenr += 1
3137 line = line[:-2] + self.lines[self.linenr]
3138 self.linenr += 1
3141 def peek_next(self): argument
3142 linenr = self.linenr
3143 if linenr >= self.length:
3145 line = self.lines[linenr]
3148 line = line[:-2] + self.lines[linenr]
3151 def unget(self): argument
3152 self.linenr -= 1
3153 while self.lines[self.linenr].endswith("\\\n"):
3154 self.linenr -= 1
3156 def next_nonblank(self): argument
3161 line = self.get_next()