Skip to content
Snippets Groups Projects
Commit 944fa9b4 authored by René Heß's avatar René Heß
Browse files

Add constructor block for constructor generation

parent 6076b826
No related branches found
No related tags found
No related merge requests found
...@@ -12,6 +12,7 @@ from dune.perftool.generation.cache import (cached, ...@@ -12,6 +12,7 @@ from dune.perftool.generation.cache import (cached,
from dune.perftool.generation.cpp import (base_class, from dune.perftool.generation.cpp import (base_class,
class_basename, class_basename,
class_member, class_member,
constructor_block,
constructor_parameter, constructor_parameter,
dump_accumulate_timer, dump_accumulate_timer,
include_file, include_file,
......
...@@ -75,6 +75,12 @@ def class_basename(classtag=None): ...@@ -75,6 +75,12 @@ def class_basename(classtag=None):
return generator_factory(item_tags=("clazz", classtag, "basename")) 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): def dump_accumulate_timer(name):
gen = generator_factory(item_tags=("dump_timers"), no_deco=True) gen = generator_factory(item_tags=("dump_timers"), no_deco=True)
......
...@@ -383,12 +383,14 @@ def cgen_class_from_cache(tag, members=[]): ...@@ -383,12 +383,14 @@ def cgen_class_from_cache(tag, members=[]):
base_classes = [bc for bc in retrieve_cache_items('{} and baseclass'.format(tag))] 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))] 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))] il = [i for i in retrieve_cache_items('{} and initializer'.format(tag))]
pm = [m for m in retrieve_cache_items('{} and member'.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))] tparams = [i for i in retrieve_cache_items('{} and template_param'.format(tag))]
from dune.perftool.cgen.clazz import Constructor 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 from dune.perftool.cgen import Class
return Class(basename, base_classes=base_classes, members=members + pm, constructors=[constructor], tparam_decls=tparams) return Class(basename, base_classes=base_classes, members=members + pm, constructors=[constructor], tparam_decls=tparams)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment