def set_ref_by_name(self, name, r_value): try: no = self.bytecode.var_to_pos[name] except KeyError: if self.extra_variables is None: self.extra_variables = new_rdict() self.extra_variables[name] = r_value else: assert no >= 0 self.vars_w[no] = r_value
def get_ref_by_name(self, name, create_new=True): """Get or create a reference to the variable `$name`.""" try: no = self.bytecode.var_to_pos[name] except KeyError: if self.extra_variables is None: if not create_new: return None self.extra_variables = new_rdict() try: w_ref = self.extra_variables[name] except KeyError: if not create_new: return None w_ref = self.interp.space.empty_ref() self.extra_variables[name] = w_ref return w_ref else: return self.load_ref(no)
def __init__(self, space): W_RDictArrayObject.__init__(self, space, new_rdict(), 0) self._globals_map = {} self._globals_version = _Globals_Version()