def visit_MapDelete(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('delete') call_code = (L.Expr(L.Call(func_name, [L.Name(node.key)])), ) code = L.insert_rel_maint(code, call_code, L.SetRemove()) return code
def visit_RelUpdate(self, node): if not isinstance(node.op, (L.SetAdd, L.SetRemove)): return node code = (node, ) auxmaps = self.auxmaps_by_rel.get(node.rel, set()) for auxmap in auxmaps: func_name = auxmap.get_maint_func_name(node.op) call_code = (L.Expr(L.Call(func_name, [L.Name(node.elem)])), ) code = L.insert_rel_maint(code, call_code, node.op) wraps = self.wraps_by_rel.get(node.rel, set()) for wrap in wraps: func_name = wrap.get_maint_func_name(node.op) call_code = (L.Expr(L.Call(func_name, [L.Name(node.elem)])), ) code = L.insert_rel_maint(code, call_code, node.op) return code
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_RelUpdate(self, node): if not isinstance(node.op, (L.SetAdd, L.SetRemove)): return node if node.rel not in self.rels: return node op_name = L.set_update_name(node.op) func_name = N.get_maint_func_name(self.result_var, node.rel, op_name) code = (node, ) call_code = (L.Expr(L.Call(func_name, [L.Name(node.elem)])), ) code = L.insert_rel_maint(code, call_code, node.op) return code