From 7fa9087c61df4c52d299ad8e748ee73a252c2832 Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Thu, 14 Apr 2016 14:15:55 +0200 Subject: [PATCH] Allow a list of generables when creating class members --- python/dune/perftool/cgen/clazz.py | 14 +++++++++++--- python/dune/perftool/pdelab/localoperator.py | 4 ++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/python/dune/perftool/cgen/clazz.py b/python/dune/perftool/cgen/clazz.py index 0fa4b5b0..fa00c0a1 100644 --- a/python/dune/perftool/cgen/clazz.py +++ b/python/dune/perftool/cgen/clazz.py @@ -36,13 +36,21 @@ class ClassMember(Generable): self.member = member self.access = access - assert isinstance(member, Generable) + # We only consider a Generable or a list thereof as member + from collections import Iterable + assert isinstance(member, Generable) or (isinstance(member, Iterable) and all(isinstance(m, Generable) for m in member)) def generate(self): yield "\n\n" yield "{}:\n".format(access_modifier_string(self.access)) - for line in self.member.generate(): - yield line + '\n' + + if isinstance(self.member, Generable): + for line in self.member.generate(): + yield line + '\n' + else: + for generable in self.member: + for line in generable.generate(): + yield line + '\n' class Constructor(Generable): diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index bb2cd648..f56a7159 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -118,8 +118,8 @@ def generate_kernel(integrand=None, measure=None): class AssemblyMethod(ClassMember): def __init__(self, signature, kernel): from loopy import generate_code - from cgen import LiteralLines - content = LiteralLines('\n' + '\n'.join(signature) + '\n' + generate_code(kernel)[0]) + from cgen import LiteralLines, Block + content = [LiteralLines('\n' + '\n'.join(signature)), Block([LiteralLines('\n' + generate_code(kernel)[0])])] ClassMember.__init__(self, content) -- GitLab