R"(
#include "{{header_filename}}"

{{#vme_events}}
namespace {{name}}_modules
{
{{#modules}}

{{struct_name}}::{{struct_name}}()
    : MVMEModule("{{name}}", "{{title}}")
{{#ref_members}}
    , {{name}}({{target}}[{{index}}])
{{/ref_members}}
{
{{#data_members}}
    RegisterDataStorage({{name}}, {{size}}, {{bits}}, "{{name}}",
        { {{#param_names}}
            "{{.}}",
        {{/param_names}} });
{{/data_members}}
}

{{struct_name}}::~{{struct_name}}()
{}

{{/modules}}
} // end namespace {{name}}_modules

{{struct_name}}::{{struct_name}}()
    : MVMEEvent("{{name}}", "{{title}}")
{
{{#modules}}
    AddModule(&{{var_name}});
{{/modules}}
}

{{struct_name}}::~{{struct_name}}()
{}

{{/vme_events}}

{{exp_struct_name}}::{{exp_struct_name}}()
    : MVMEExperiment("{{exp_name}}", "{{exp_title}}")
{
{{#vme_events}}
    AddEvent(&{{var_name}});
{{/vme_events}}
}

{{exp_struct_name}}::~{{exp_struct_name}}()
{}

{{!
vim:ft=cpp
}})"
