From 944fa9b44441f8310aba346dbfb8f016730f437a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20He=C3=9F?= <rene@debian> Date: Wed, 5 Oct 2016 13:40:56 +0200 Subject: [PATCH] Add constructor block for constructor generation --- python/dune/perftool/generation/__init__.py | 1 + python/dune/perftool/generation/cpp.py | 6 ++++++ python/dune/perftool/pdelab/localoperator.py | 4 +++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/python/dune/perftool/generation/__init__.py b/python/dune/perftool/generation/__init__.py index 934208c8..1b084cbc 100644 --- a/python/dune/perftool/generation/__init__.py +++ b/python/dune/perftool/generation/__init__.py @@ -12,6 +12,7 @@ from dune.perftool.generation.cache import (cached, from dune.perftool.generation.cpp import (base_class, class_basename, class_member, + constructor_block, constructor_parameter, dump_accumulate_timer, include_file, diff --git a/python/dune/perftool/generation/cpp.py b/python/dune/perftool/generation/cpp.py index 166dc9fe..ea8727be 100644 --- a/python/dune/perftool/generation/cpp.py +++ b/python/dune/perftool/generation/cpp.py @@ -75,6 +75,12 @@ def class_basename(classtag=None): return generator_factory(item_tags=("clazz", classtag, "basename")) +def constructor_block(classtag=None): + assert classtag + from dune.perftool.generation import generator_factory + return generator_factory(item_tags=("clazz", classtag, "constructor_block"), counted=True) + + def dump_accumulate_timer(name): gen = generator_factory(item_tags=("dump_timers"), no_deco=True) diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index 7936437e..ed4d5a45 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -383,12 +383,14 @@ def cgen_class_from_cache(tag, members=[]): base_classes = [bc for bc in retrieve_cache_items('{} and baseclass'.format(tag))] constructor_params = [bc for bc in retrieve_cache_items('{} and constructor_param'.format(tag))] + from cgen import Block + constructor_block = Block(contents=[i for i in retrieve_cache_items("{} and constructor_block".format(tag), make_generable=True)]) il = [i for i in retrieve_cache_items('{} and initializer'.format(tag))] pm = [m for m in retrieve_cache_items('{} and member'.format(tag))] tparams = [i for i in retrieve_cache_items('{} and template_param'.format(tag))] from dune.perftool.cgen.clazz import Constructor - constructor = Constructor(arg_decls=constructor_params, clsname=basename, initializer_list=il) + constructor = Constructor(block=constructor_block, arg_decls=constructor_params, clsname=basename, initializer_list=il) from dune.perftool.cgen import Class return Class(basename, base_classes=base_classes, members=members + pm, constructors=[constructor], tparam_decls=tparams) -- GitLab