From 9a82cb25bcc9a420285e28f3f977ae0b806ef7c2 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Mon, 27 Aug 2012 11:16:58 -0400 Subject: [PATCH] Add some mapper support for slices. --- pymbolic/mapper/__init__.py | 10 ++++++++++ pymbolic/mapper/dependency.py | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/pymbolic/mapper/__init__.py b/pymbolic/mapper/__init__.py index a88e861..9173b39 100644 --- a/pymbolic/mapper/__init__.py +++ b/pymbolic/mapper/__init__.py @@ -279,6 +279,16 @@ class IdentityMapperBase(object): self.rec(expr.child, *args), expr.variables) + def map_slice(self, expr, *args): + def do_map(expr): + if expr is None: + return expr + else: + return self.rec(ch, *args) + + return type(expr)( + tuple(do_map(ch) for ch in expr.children)) + def map_if_positive(self, expr, *args): return type(expr)( self.rec(expr.criterion, *args), diff --git a/pymbolic/mapper/dependency.py b/pymbolic/mapper/dependency.py index 832cf53..3a40f6f 100644 --- a/pymbolic/mapper/dependency.py +++ b/pymbolic/mapper/dependency.py @@ -67,3 +67,8 @@ class DependencyMapper(CSECachingMapperMixin, CombineMapper): return set([expr]) else: return CombineMapper.map_common_subexpression(self, expr) + + def map_slice(self, expr): + return self.combine( + [self.rec(child) for child in expr.children + if child is not None]) -- GitLab