Skip to content
This repository was archived by the owner on May 18, 2019. It is now read-only.

Commit dcd7c9e

Browse files
rfrankeOpenModelica-Hudson
authored andcommitted
Separate init of StatArray from assign with operator=
This way operator=(array) is always a synonym for assign(array). Belonging to [master]: - #2716
1 parent 095844b commit dcd7c9e

File tree

2 files changed

+75
-116
lines changed

2 files changed

+75
-116
lines changed

Compiler/Template/CodegenCpp.tpl

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -3672,22 +3672,22 @@ match simCode
36723672
let className = lastIdentOfPath(modelInfo.name)
36733673
let partitionInit = if Flags.isSet(Flags.MULTIRATE_PARTITION) then partitionInfoInit(partitionData.numPartitions, vi.numStateVars, partitionData.stateToActivators) else ""
36743674
<<
3675-
defineConstVals();
3676-
defineStateVars();
3677-
defineDerivativeVars();
3678-
defineAlgVars();
3679-
defineDiscreteAlgVars();
3680-
defineIntAlgVars();
3681-
defineBoolAlgVars();
3682-
defineStringAlgVars();
3683-
defineParameterRealVars();
3684-
defineParameterIntVars();
3685-
defineParameterBoolVars();
3686-
defineParameterStringVars();
3687-
defineAliasRealVars();
3688-
defineAliasIntVars();
3689-
defineAliasBoolVars();
3690-
defineAliasStringVars();
3675+
initConstVals();
3676+
initStateVars();
3677+
initDerivativeVars();
3678+
initAlgVars();
3679+
initDiscreteAlgVars();
3680+
initIntAlgVars();
3681+
initBoolAlgVars();
3682+
initStringAlgVars();
3683+
initParameterRealVars();
3684+
initParameterIntVars();
3685+
initParameterBoolVars();
3686+
initParameterStringVars();
3687+
initAliasRealVars();
3688+
initAliasIntVars();
3689+
initAliasBoolVars();
3690+
initAliasStringVars();
36913691

36923692
//Number of equations
36933693
<%dimension1(simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace)%>
@@ -6914,21 +6914,21 @@ match modelInfo
69146914
//Saves all variables before an event is handled, is needed for the pre, edge and change operator
69156915
void saveAll();
69166916

6917-
void defineStateVars();
6918-
void defineDerivativeVars();
6919-
void defineAlgVars();
6920-
void defineDiscreteAlgVars();
6921-
void defineIntAlgVars();
6922-
void defineBoolAlgVars();
6923-
void defineStringAlgVars();
6924-
void defineParameterRealVars();
6925-
void defineParameterIntVars();
6926-
void defineParameterBoolVars();
6927-
void defineParameterStringVars();
6928-
void defineAliasRealVars();
6929-
void defineAliasIntVars();
6930-
void defineAliasBoolVars();
6931-
void defineAliasStringVars();
6917+
void initStateVars();
6918+
void initDerivativeVars();
6919+
void initAlgVars();
6920+
void initDiscreteAlgVars();
6921+
void initIntAlgVars();
6922+
void initBoolAlgVars();
6923+
void initStringAlgVars();
6924+
void initParameterRealVars();
6925+
void initParameterIntVars();
6926+
void initParameterBoolVars();
6927+
void initParameterStringVars();
6928+
void initAliasRealVars();
6929+
void initAliasIntVars();
6930+
void initAliasBoolVars();
6931+
void initAliasStringVars();
69326932

69336933
void deleteObjects();
69346934

@@ -7857,7 +7857,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
78577857
<%List.partition(vars.stateVars, 100) |> varPartition hasindex i0 =>
78587858
memberVariableInitializeWithSplit(varPartition, i0, "defineStateVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesReal, useFlatArrayNotation, createDebugCode, "Real", additionalStateVarFunctionCalls, additionalConstructorVariables, additionalFunctionDefinitions) ;separator="\n"%>
78597859

7860-
void <%classname%>::defineStateVars()
7860+
void <%classname%>::initStateVars()
78617861
{
78627862
<%additionalStateVarFunctionCalls%>
78637863
}
@@ -7866,7 +7866,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
78667866
<%List.partition(vars.derivativeVars, 100) |> varPartition hasindex i0 =>
78677867
memberVariableInitializeWithSplit(varPartition, i0, "defineDerivativeVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesReal, useFlatArrayNotation, createDebugCode, "Real", additionalDerivativeVarFunctionCalls, additionalConstructorVariables, additionalFunctionDefinitions) ;separator="\n"%>
78687868

7869-
void <%classname%>::defineDerivativeVars()
7869+
void <%classname%>::initDerivativeVars()
78707870
{
78717871
<%additionalDerivativeVarFunctionCalls%>
78727872
}
@@ -7876,7 +7876,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
78767876
memberVariableInitializeWithSplit(varPartition, i0, "defineAlgVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesReal, useFlatArrayNotation, createDebugCode, "Real",
78777877
additionalAlgVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
78787878

7879-
void <%classname%>::defineAlgVars()
7879+
void <%classname%>::initAlgVars()
78807880
{
78817881
<%additionalAlgVarFunctionCalls%>
78827882
}
@@ -7886,7 +7886,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
78867886
memberVariableInitializeWithSplit(varPartition, i0, "defineDiscreteAlgVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesReal, useFlatArrayNotation, createDebugCode, "Real",
78877887
additionalDiscreteAlgVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
78887888

7889-
void <%classname%>::defineDiscreteAlgVars()
7889+
void <%classname%>::initDiscreteAlgVars()
78907890
{
78917891
<%additionalDiscreteAlgVarFunctionCalls%>
78927892
}
@@ -7895,7 +7895,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
78957895
<%List.partition(vars.intAlgVars, 100) |> varPartition hasindex i0 =>
78967896
memberVariableInitializeWithSplit(varPartition, i0, "defineIntAlgVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesInt, useFlatArrayNotation, createDebugCode, "Int",
78977897
additionalIntAlgVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
7898-
void <%classname%>::defineIntAlgVars()
7898+
void <%classname%>::initIntAlgVars()
78997899
{
79007900
<%additionalIntAlgVarFunctionCalls%>
79017901
}
@@ -7904,7 +7904,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
79047904
<%List.partition(vars.boolAlgVars, 100) |> varPartition hasindex i0 =>
79057905
memberVariableInitializeWithSplit(varPartition, i0, "defineBoolAlgVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesBool, useFlatArrayNotation, createDebugCode, "Bool",
79067906
additionalBoolAlgVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
7907-
void <%classname%>::defineBoolAlgVars()
7907+
void <%classname%>::initBoolAlgVars()
79087908
{
79097909
<%additionalBoolAlgVarFunctionCalls%>
79107910
}
@@ -7913,7 +7913,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
79137913
<%List.partition(vars.stringAlgVars, 100) |> varPartition hasindex i0 =>
79147914
memberVariableInitializeWithSplit(varPartition, i0, "defineStringAlgVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesString, useFlatArrayNotation, createDebugCode, "String",
79157915
additionalStringAlgVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
7916-
void <%classname%>::defineStringAlgVars()
7916+
void <%classname%>::initStringAlgVars()
79177917
{
79187918
<%additionalStringAlgVarFunctionCalls%>
79197919
}
@@ -7922,7 +7922,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
79227922
<%List.partition(vars.paramVars, 100) |> varPartition hasindex i0 =>
79237923
memberVariableInitializeWithSplit(varPartition, i0, "defineParameterRealVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesReal, useFlatArrayNotation, createDebugCode, "Real",
79247924
additionalParameterRealVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
7925-
void <%classname%>::defineParameterRealVars()
7925+
void <%classname%>::initParameterRealVars()
79267926
{
79277927
<%additionalParameterRealVarFunctionCalls%>
79287928
}
@@ -7931,7 +7931,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
79317931
<%List.partition(vars.intParamVars, 100) |> varPartition hasindex i0 =>
79327932
memberVariableInitializeWithSplit(varPartition, i0, "defineParameterIntVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesInt, useFlatArrayNotation, createDebugCode, "Int",
79337933
additionalParameterIntVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
7934-
void <%classname%>::defineParameterIntVars()
7934+
void <%classname%>::initParameterIntVars()
79357935
{
79367936
<%additionalParameterIntVarFunctionCalls%>
79377937
}
@@ -7940,7 +7940,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
79407940
<%List.partition(vars.boolParamVars, 100) |> varPartition hasindex i0 =>
79417941
memberVariableInitializeWithSplit(varPartition, i0, "defineParameterBoolVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesBool, useFlatArrayNotation, createDebugCode, "Bool",
79427942
additionalParameterBoolVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
7943-
void <%classname%>::defineParameterBoolVars()
7943+
void <%classname%>::initParameterBoolVars()
79447944
{
79457945
<%additionalParameterBoolVarFunctionCalls%>
79467946
}
@@ -7949,7 +7949,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
79497949
<%List.partition(vars.stringParamVars, 100) |> varPartition hasindex i0 =>
79507950
memberVariableInitializeWithSplit(varPartition, i0, "defineParameterStringVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesString, useFlatArrayNotation, createDebugCode, "String",
79517951
additionalParameterStringVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
7952-
void <%classname%>::defineParameterStringVars()
7952+
void <%classname%>::initParameterStringVars()
79537953
{
79547954
<%additionalParameterStringVarFunctionCalls%>
79557955
}
@@ -7958,7 +7958,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
79587958
<%List.partition(vars.aliasVars, 100) |> varPartition hasindex i0 =>
79597959
memberVariableInitializeWithSplit(varPartition, i0, "defineAliasRealVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesReal, useFlatArrayNotation, createDebugCode, "Real",
79607960
additionalAliasRealVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
7961-
void <%classname%>::defineAliasRealVars()
7961+
void <%classname%>::initAliasRealVars()
79627962
{
79637963
<%additionalAliasRealVarFunctionCalls%>
79647964
}
@@ -7967,7 +7967,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
79677967
<%List.partition(vars.intAliasVars, 100) |> varPartition hasindex i0 =>
79687968
memberVariableInitializeWithSplit(varPartition, i0, "defineAliasIntVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesInt, useFlatArrayNotation, createDebugCode, "Int",
79697969
additionalAliasIntVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
7970-
void <%classname%>::defineAliasIntVars()
7970+
void <%classname%>::initAliasIntVars()
79717971
{
79727972
<%additionalAliasIntVarFunctionCalls%>
79737973
}
@@ -7976,7 +7976,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
79767976
<%List.partition(vars.boolAliasVars, 100) |> varPartition hasindex i0 =>
79777977
memberVariableInitializeWithSplit(varPartition, i0, "defineAliasBoolVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesBool, useFlatArrayNotation, createDebugCode, "Bool",
79787978
additionalAliasBoolVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
7979-
void <%classname%>::defineAliasBoolVars()
7979+
void <%classname%>::initAliasBoolVars()
79807980
{
79817981
<%additionalAliasBoolVarFunctionCalls%>
79827982
}
@@ -7985,7 +7985,7 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
79857985
<%List.partition(vars.stringAliasVars, 100) |> varPartition hasindex i0 =>
79867986
memberVariableInitializeWithSplit(varPartition, i0, "defineAliasStringVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesString, useFlatArrayNotation, createDebugCode, "String",
79877987
additionalAliasStringVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
7988-
void <%classname%>::defineAliasStringVars()
7988+
void <%classname%>::initAliasStringVars()
79897989
{
79907990
<%additionalAliasStringVarFunctionCalls%>
79917991
}
@@ -8043,7 +8043,7 @@ template memberVariableInitialize2(SimVar simVar, HashTableCrIListArray.HashTabl
80438043
if SimCodeUtil.isVarIndexListConsecutive(varToArrayIndexMapping,name) then
80448044
let arrayHeadIdx = listHead(SimCodeUtil.getVarIndexListByMapping(varToArrayIndexMapping,name,true,indexForUndefinedReferences))
80458045
<<
8046-
<%arrayName%> = StatArrayDim<%dims%><<%typeString%>, <%arrayextentDims(name, v.numArrayElement)%>, true>(&_pointerTo<%type%>Vars[<%arrayHeadIdx%>]);
8046+
<%arrayName%>.init(&_pointerTo<%type%>Vars[<%arrayHeadIdx%>]);
80478047
>>
80488048
else
80498049
let arrayIndices = SimCodeUtil.getVarIndexListByMapping(varToArrayIndexMapping,name,true,indexForUndefinedReferences) |> idx => '<%idx%>'; separator=" LIST_SEP "
@@ -8059,7 +8059,7 @@ template memberVariableInitialize2(SimVar simVar, HashTableCrIListArray.HashTabl
80598059
let typeString = expTypeShort(type_)
80608060
let arrayHeadIdx = listHead(SimCodeUtil.getVarIndexListByMapping(varToArrayIndexMapping,name,true,indexForUndefinedReferences))
80618061
<<
8062-
<%varName%> = StatArrayDim<%listLength(v.numArrayElement)%><<%typeString%>, <%List.lastN(v.numArrayElement, listLength(v.numArrayElement));separator=","%>, true>(&_pointerTo<%type%>Vars[<%arrayHeadIdx%>]);
8062+
<%varName%>.init(&_pointerTo<%type%>Vars[<%arrayHeadIdx%>]);
80638063
>>
80648064
/*special case for variables that marked as array but are not arrays */
80658065
case SIMVAR(numArrayElement=_::_) then
@@ -8561,14 +8561,14 @@ case SIMCODE(modelInfo = MODELINFO(varInfo = vi as VARINFO(__), vars = vars as S
85618561
then
85628562
let className = lastIdentOfPath(name)
85638563
let &additionalConstVarFunctionCalls = buffer ""
8564-
let &extraFuncsDecl += "void defineConstVals();"
8564+
let &extraFuncsDecl += "void initConstVals();"
85658565
<<
85668566

85678567
//String parameter <%listLength(vars.stringParamVars)%>
85688568
<%List.partition(vars.stringParamVars, 100) |> varPartition hasindex i0 =>
85698569
initConstValsWithSplit(varPartition, simCode, i0, className, additionalConstVarFunctionCalls, extraFuncsDecl, stateDerVectorName, useFlatArrayNotation) ;separator="\n"%>
85708570

8571-
void <%className%>::defineConstVals()
8571+
void <%className%>::initConstVals()
85728572
{
85738573
<%additionalConstVarFunctionCalls%>
85748574
}
@@ -8577,10 +8577,10 @@ end simulationInitFile;
85778577

85788578
template initConstValsWithSplit(list<SimVar> simVars, SimCode simCode, Text idx, Text className, Text& additionalFunctionCalls, Text& additionalFunctionDefinitions, Text stateDerVectorName /*=__zDot*/, Boolean useFlatArrayNotation)
85798579
::=
8580-
let &additionalFunctionCalls += ' defineConstVals_<%idx%>();<%\n%>'
8581-
let &additionalFunctionDefinitions += 'void defineConstVals_<%idx%>();<%\n%>'
8580+
let &additionalFunctionCalls += ' initConstVals_<%idx%>();<%\n%>'
8581+
let &additionalFunctionDefinitions += 'void initConstVals_<%idx%>();<%\n%>'
85828582
<<
8583-
void <%className%>::defineConstVals_<%idx%>()
8583+
void <%className%>::initConstVals_<%idx%>()
85848584
{
85858585
<%simVars |> var =>
85868586
initConstValue(var, simCode, stateDerVectorName, useFlatArrayNotation)

0 commit comments

Comments
 (0)