From 849eef1862c9bedb6b7eee5a2acd55b143019500 Mon Sep 17 00:00:00 2001 From: Luc Grosheintz Date: Wed, 28 Feb 2024 14:53:49 +0100 Subject: [PATCH] Pass inst when passing id. (#1184) For functions that are meant to be called "in a loop", i.e. function which accept `id`, we also pass `inst`. --- src/codegen/codegen_neuron_cpp_visitor.cpp | 6 +++--- test/usecases/references | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/codegen/codegen_neuron_cpp_visitor.cpp b/src/codegen/codegen_neuron_cpp_visitor.cpp index 6f06aada8..c3ed7567d 100644 --- a/src/codegen/codegen_neuron_cpp_visitor.cpp +++ b/src/codegen/codegen_neuron_cpp_visitor.cpp @@ -211,8 +211,6 @@ void CodegenNeuronCppVisitor::print_function_or_procedure(const ast::Block& node printer->add_text(" "); printer->push_block(); - printer->fmt_line("auto inst = make_instance_{}(*_ml);", info.mod_suffix); - // function requires return variable declaration if (node.is_function_block()) { auto type = default_float_data_type(); @@ -328,6 +326,7 @@ void CodegenNeuronCppVisitor::print_hoc_py_wrapper_function_body( _nt = nrn_threads; )CODE"); } + printer->fmt_line("auto inst = make_instance_{}(_ml_real);", info.mod_suffix); if (info.function_uses_table(block_name)) { printer->fmt_line("_check_{}({})", block_name, internal_method_arguments()); } @@ -376,13 +375,14 @@ void CodegenNeuronCppVisitor::print_hoc_py_wrapper_function_definitions() { std::string CodegenNeuronCppVisitor::internal_method_arguments() { - return "_ml, id, _ppvar, _thread, _nt"; + return "_ml, inst, id, _ppvar, _thread, _nt"; } CodegenNeuronCppVisitor::ParamVector CodegenNeuronCppVisitor::internal_method_parameters() { ParamVector params; params.emplace_back("", "_nrn_mechanism_cache_range*", "", "_ml"); + params.emplace_back("", fmt::format("{}&", instance_struct()), "", "inst"); params.emplace_back("", "size_t", "", "id"); params.emplace_back("", "Datum*", "", "_ppvar"); params.emplace_back("", "Datum*", "", "_thread"); diff --git a/test/usecases/references b/test/usecases/references index 25e2d91de..e508c4bb2 160000 --- a/test/usecases/references +++ b/test/usecases/references @@ -1 +1 @@ -Subproject commit 25e2d91deabe4115ada0edb91b99e27416c3ff7c +Subproject commit e508c4bb21af8ee5f962ad33b0c101d21f8cd8df