From 8a42fcb945ceeed4de3b0176b01a86cc72fd2b72 Mon Sep 17 00:00:00 2001 From: "C.A.P. Linssen" Date: Sun, 24 Apr 2022 21:10:22 +0200 Subject: [PATCH] fix upper case state variable name naming clash --- .../printers/gsl_reference_converter.py | 4 ++-- .../point_neuron/common/NeuronClass.jinja2 | 14 +++++++------- .../point_neuron/common/NeuronHeader.jinja2 | 12 ++++++------ .../directives/DynamicStateElement.jinja2 | 8 ++++---- .../directives/StateVariablesEnum.jinja2 | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/pynestml/codegeneration/printers/gsl_reference_converter.py b/pynestml/codegeneration/printers/gsl_reference_converter.py index 8e0d7edf9..057e89b5f 100644 --- a/pynestml/codegeneration/printers/gsl_reference_converter.py +++ b/pynestml/codegeneration/printers/gsl_reference_converter.py @@ -204,7 +204,7 @@ def array_index(self, symbol: VariableSymbol) -> str: :param symbol: a single variable symbol :return: the corresponding string format """ - return 'State_::' + self.convert_to_cpp_name(symbol.get_symbol_name()) + return 'State_::STATE_VEC_VAR_' + self.convert_to_cpp_name(symbol.get_symbol_name()) def name(self, symbol: VariableSymbol) -> str: """ @@ -213,6 +213,6 @@ def name(self, symbol: VariableSymbol) -> str: :return: the corresponding string format """ if symbol.is_state() and not symbol.is_inline_expression: - return 'ode_state[State_::' + self.convert_to_cpp_name(symbol.get_symbol_name()) + ']' + return 'ode_state[State_::STATE_VEC_VAR_' + self.convert_to_cpp_name(symbol.get_symbol_name()) + ']' return super().name(symbol) diff --git a/pynestml/codegeneration/resources_nest/point_neuron/common/NeuronClass.jinja2 b/pynestml/codegeneration/resources_nest/point_neuron/common/NeuronClass.jinja2 index 739cfa5f0..a7f5d4d08 100644 --- a/pynestml/codegeneration/resources_nest/point_neuron/common/NeuronClass.jinja2 +++ b/pynestml/codegeneration/resources_nest/point_neuron/common/NeuronClass.jinja2 @@ -87,7 +87,7 @@ template <> void RecordablesMap<{{neuronName}}>::create() {%- if has_state_vectors %} {%- for sym in recordable_state_variables %} {%- if not sym.has_vector_parameter() %} - insert("{{sym.get_symbol_name()}}", host.get_data_access_functor( {{neuronName}}::State_::{{names.name(sym).upper()}} )); + insert("{{sym.get_symbol_name()}}", host.get_data_access_functor( {{neuronName}}::State_::STATE_VEC_VAR_{{names.name(sym).upper()}} )); {%- endif %} {%- endfor %} {%- else %} @@ -127,7 +127,7 @@ template <> void RecordablesMap<{{neuronName}}>::create() {%- for variable in neuron.get_vector_state_symbols() %} for (size_t i = 0; i < {{printer.print_vector_size_parameter(variable)}}; i++) { - size_t elem = {{neuronName}}::State_::{{names.name(variable).upper()}} + i; + size_t elem = {{neuronName}}::State_::STATE_VEC_VAR_{{names.name(variable).upper()}} + i; recordablesMap_.insert(get_var_name(i, "{{names.name(variable).upper()}}_"), this->get_data_access_functor(elem)); } {%- endfor %} @@ -679,7 +679,7 @@ void double ode_state_bak[State_::STATE_VEC_SIZE]; {%- for variable_name in numeric_state_variables %} -ode_state_bak[State_::{{variable_name}}] = S_.ode_state[State_::{{variable_name}}]; +ode_state_bak[State_::STATE_VEC_VAR_{{variable_name}}] = S_.ode_state[State_::STATE_VEC_VAR_{{variable_name}}]; {%- endfor %} {%- if uses_numeric_solver %} @@ -688,12 +688,12 @@ ode_state_bak[State_::{{variable_name}}] = S_.ode_state[State_::{{variable_name} // restore non-synapse->neuron-moved variables {%- for variable_name in numeric_state_variables %} -S_.ode_state[State_::{{variable_name}}] = ode_state_bak[State_::{{variable_name}}]; +S_.ode_state[State_::STATE_VEC_VAR_{{variable_name}}] = ode_state_bak[State_::STATE_VEC_VAR_{{variable_name}}]; {%- endfor %} // restore variables solved analytically {%- for variable_name in numeric_state_variables %} -S_.ode_state[State_::{{variable_name}}] = ode_state_bak[State_::{{variable_name}}]; +S_.ode_state[State_::STATE_VEC_VAR_{{variable_name}}] = ode_state_bak[State_::STATE_VEC_VAR_{{variable_name}}]; {%- endfor %} {%- endif %} @@ -829,7 +829,7 @@ for (int i = 0; i < STATE_VEC_SIZE; ++i) { {%- for variable_name in numeric_state_variables_moved|sort %} {%- if not variable_name in analytic_state_variables_moved %} -S_.ode_state[State_::{{variable_name}}] = ode_state_tmp[State_::{{variable_name}}]; +S_.ode_state[State_::STATE_VEC_VAR_{{variable_name}}] = ode_state_tmp[State_::STATE_VEC_VAR_{{variable_name}}]; {%- endif %} {%- endfor %} {%- endif %} @@ -911,7 +911,7 @@ for (int i = 0; i < STATE_VEC_SIZE; ++i) { {%- for variable_name in numeric_state_variables_moved|sort %} {%- if not variable_name in analytic_state_variables_moved %} - S_.ode_state[State_::{{variable_name}}] = ode_state_tmp[State_::{{variable_name}}]; + S_.ode_state[State_::STATE_VEC_VAR_{{variable_name}}] = ode_state_tmp[State_::STATE_VEC_VAR_{{variable_name}}]; {%- endif %} {%- endfor %} {%- endif %} diff --git a/pynestml/codegeneration/resources_nest/point_neuron/common/NeuronHeader.jinja2 b/pynestml/codegeneration/resources_nest/point_neuron/common/NeuronHeader.jinja2 index 6cb2f072f..b614c5bc8 100644 --- a/pynestml/codegeneration/resources_nest/point_neuron/common/NeuronHeader.jinja2 +++ b/pynestml/codegeneration/resources_nest/point_neuron/common/NeuronHeader.jinja2 @@ -496,25 +496,25 @@ private: {#- N.B. numeric solver contains all state variables, including those that will be solved by analytic solver #} {%- if uses_numeric_solver %} {%- for variable_name in numeric_state_variables %} - {{variable_name}}, + STATE_VEC_VAR_{{variable_name}}, {%- endfor %} // moved state variables from synapse {%- for variable_name in purely_numeric_state_variables_moved|sort %} - {{variable_name}}, + STATE_VEC_VAR_{{variable_name}}, {%- endfor %} {%- for variable_name in analytic_state_variables_moved|sort %} - {{variable_name}}, + STATE_VEC_VAR_{{variable_name}}, {%- endfor %} {%- for variable_name in non_equations_state_variables: %} - {{variable_name}}, + STATE_VEC_VAR_{{variable_name}}, {%- endfor %} {%- else %} {#- analytic solver only #} {%- for variable_name in analytic_state_variables: %} - {{variable_name}}, + STATE_VEC_VAR_{{variable_name}}, {%- endfor %} {%- for variable_name in non_equations_state_variables: %} - {{variable_name}}, + STATE_VEC_VAR_{{variable_name}}, {%- endfor %} {%- endif %} STATE_VEC_SIZE diff --git a/pynestml/codegeneration/resources_nest/point_neuron/directives/DynamicStateElement.jinja2 b/pynestml/codegeneration/resources_nest/point_neuron/directives/DynamicStateElement.jinja2 index 55e34e090..8f1c8bc45 100644 --- a/pynestml/codegeneration/resources_nest/point_neuron/directives/DynamicStateElement.jinja2 +++ b/pynestml/codegeneration/resources_nest/point_neuron/directives/DynamicStateElement.jinja2 @@ -21,12 +21,12 @@ inline double get_state_element(size_t elem) {%- if size|int == 0 %} {%- set size = printer.print_vector_size_parameter(variable) %} {%- endif -%} - (elem >= State_::{{names.name(variable).upper()}} && elem < State_::{{names.name(variable).upper()}} + {{size}}) + (elem >= State_::STATE_VEC_VAR_{{names.name(variable).upper()}} && elem < State_::STATE_VEC_VAR_{{names.name(variable).upper()}} + {{size}}) { - return S_.{{names.name(variable)}}[ elem - State_::{{names.name(variable).upper()}}]; + return S_.{{names.name(variable)}}[ elem - State_::STATE_VEC_VAR_{{names.name(variable).upper()}}]; } {%- else %} - (elem == State_::{{names.name(variable).upper()}}) + (elem == State_::STATE_VEC_VAR_{{names.name(variable).upper()}}) { return S_.{{names.name(variable)}}; } @@ -34,7 +34,7 @@ inline double get_state_element(size_t elem) {%- else %} {%- if variable.has_vector_parameter() %} { - return S_.{{names.name(variable)}}[ elem - State_::{{names.name(variable).upper()}}]; + return S_.{{names.name(variable)}}[ elem - State_::STATE_VEC_VAR_{{names.name(variable).upper()}}]; } {%- else %} { diff --git a/pynestml/codegeneration/resources_nest/point_neuron/directives/StateVariablesEnum.jinja2 b/pynestml/codegeneration/resources_nest/point_neuron/directives/StateVariablesEnum.jinja2 index e90fd8e9b..a8356b0a1 100644 --- a/pynestml/codegeneration/resources_nest/point_neuron/directives/StateVariablesEnum.jinja2 +++ b/pynestml/codegeneration/resources_nest/point_neuron/directives/StateVariablesEnum.jinja2 @@ -8,7 +8,7 @@ enum StateVecVars { {%- for variable in neuron.get_state_symbols() %} {% set varDomain = declarations.get_domain_from_type(variable.get_type_symbol()) -%} {% if varDomain == "double" and variable.is_recordable -%} - {{names.name(variable).upper()}} = {{ns.count}}, + STATE_VEC_VAR_{{names.name(variable).upper()}} = {{ns.count}}, {%- if variable.has_vector_parameter() -%} {%- set size = utils.get_numeric_vector_size(variable) -%} {%- set ns.count = ns.count + size -%}