def visit_AttrAssign(self, node): if node.attr not in self.objrels.Fs: return pair = L.Tuple([node.obj, node.value]) var = next(self.fresh_vars) return (L.Assign(var, pair), L.RelUpdate(N.F(node.attr), L.SetAdd(), var))
def visit_DictAssign(self, node): if not self.objrels.MAP: return triple = L.Tuple([node.target, node.key, node.value]) var = next(self.fresh_vars) return (L.Assign(var, triple), L.RelUpdate(N.MAP, L.SetAdd(), var))
def visit_MapAssign(self, node): sfm = self.setfrommaps_by_map.get(node.map, None) if sfm is None: return node code = (node, ) func_name = sfm.get_maint_func_name('assign') call_code = (L.Expr( L.Call(func_name, [L.Name(node.key), L.Name(node.value)])), ) code = L.insert_rel_maint(code, call_code, L.SetAdd()) return code
def visit_Module(self, node): node = self.generic_visit(node) funcs = [] for auxmaps in self.auxmaps_by_rel.values(): for auxmap in auxmaps: for op in [L.SetAdd(), L.SetRemove()]: func = make_auxmap_maint_func(self.fresh_vars, auxmap, op) funcs.append(func) for sfm in self.setfrommaps_by_map.values(): for op in ['assign', 'delete']: func = make_setfrommap_maint_func(self.fresh_vars, sfm, op) funcs.append(func) for wraps in self.wraps_by_rel.values(): for wrap in wraps: for op in [L.SetAdd(), L.SetRemove()]: func = make_wrap_maint_func(self.fresh_vars, wrap, op) funcs.append(func) func_names = L.get_defined_functions(tuple(funcs)) self.maint_funcs.update(func_names) node = node._replace(body=tuple(funcs) + node.body) return node
def visit_Module(self, node): node = self.generic_visit(node) fv = self.fresh_vars ops = [L.SetAdd(), L.SetRemove()] funcs = [] for op in ops: func = make_aggr_oper_maint_func(fv, self.aggrinv, op) funcs.append(func) if self.aggrinv.uses_demand: for op in ops: func = make_aggr_restr_maint_func(fv, self.aggrinv, op) funcs.append(func) func_names = L.get_defined_functions(tuple(funcs)) self.maint_funcs.update(func_names) node = node._replace(body=tuple(funcs) + node.body) return node
def visit_Module(self, node): ct = self.clausetools node = self.generic_visit(node) funcs = [] for rel in self.rels: for op in [L.SetAdd(), L.SetRemove()]: fresh_var_prefix = next(self.fresh_vars) func = make_comp_maint_func(ct, fresh_var_prefix, self.fresh_join_names, self.comp, self.result_var, rel, op, counted=self.counted) funcs.append(func) func_names = L.get_defined_functions(tuple(funcs)) self.maint_funcs.update(func_names) node = node._replace(body=tuple(funcs) + node.body) return node