diff --git a/python/dune/perftool/cgen/clazz.py b/python/dune/perftool/cgen/clazz.py index 0fa4b5b0aba76343d7bf744cf7b19dd319bdf772..fa00c0a126d16b241278ec15f437b3f32f93049e 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 bb2cd648a25fbbf45bca1edde7ef40e1cfb50350..f56a7159f3715f00a60aca520a8a3d6f1bf69307 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)