@@ -342,37 +342,24 @@ protected function encapsulateWhenConditions_EquationsWithArrayConditions "autho
342342 input DAE . ElementSource inSource;
343343 input Integer inIndex;
344344 input HashTableExpToIndex . HashTable inHT;
345- output list< DAE . Exp > outConditionList;
346- output list< BackendDAE . Var > outVars;
347- output list< BackendDAE . Equation > outEqns;
348- output Integer outIndex;
349- output HashTableExpToIndex . HashTable outHT;
345+ output list< DAE . Exp > outConditionList = {};
346+ output list< BackendDAE . Var > outVars = {};
347+ output list< BackendDAE . Equation > outEqns = {};
348+ output Integer outIndex = inIndex;
349+ output HashTableExpToIndex . HashTable outHT = inHT;
350+ protected
351+ list< BackendDAE . Var > vars1;
352+ list< BackendDAE . Equation > eqns1;
350353algorithm
351- (outConditionList, outVars, outEqns, outIndex, outHT) := match inConditionList
352- local
353- Integer index;
354- list< BackendDAE . Var > vars1, vars2;
355- list< BackendDAE . Equation > eqns1, eqns2;
356-
357- DAE . Exp condition;
358- list< DAE . Exp > conditionList;
359-
360- HashTableExpToIndex . HashTable ht;
361-
362- case {} equation
363- then ({}, {}, {}, inIndex, inHT);
364-
365- case condition::conditionList equation
366- (condition, vars1, eqns1, index, ht) = encapsulateWhenConditions_Equations1(condition, inSource, inIndex, inHT);
367- (conditionList, vars2, eqns2, index, ht) = encapsulateWhenConditions_EquationsWithArrayConditions(conditionList, inSource, index, ht);
368- vars1 = listAppend(vars1, vars2);
369- eqns1 = listAppend(eqns1, eqns2);
370- then (condition::conditionList, vars1, eqns1, index, ht);
371-
372- else equation
373- Error . addMessage(Error . INTERNAL_ERROR , {"./Compiler/BackEnd/FindZeroCrossings.mo: function encapsulateWhenConditions_EquationsWithArrayConditions failed" });
374- then fail();
375- end match;
354+ for condition in inConditionList loop
355+ (condition, vars1, eqns1, outIndex, outHT) := encapsulateWhenConditions_Equations1(condition, inSource, outIndex, outHT);
356+ outVars := List . append_reverse(vars1,outVars);
357+ outEqns := List . append_reverse(eqns1,outEqns);
358+ outConditionList := condition::outConditionList;
359+ end for ;
360+ outVars := listReverse(outVars);
361+ outEqns := listReverse(outEqns);
362+ outConditionList := listReverse(outConditionList);
376363end encapsulateWhenConditions_EquationsWithArrayConditions;
377364
378365protected function encapsulateWhenConditions_Algorithms "author: lochel"
@@ -529,34 +516,23 @@ protected function encapsulateWhenConditions_AlgorithmsWithArrayConditions "auth
529516 input list< DAE . Exp > inConditionList;
530517 input DAE . ElementSource inSource;
531518 input Integer inIndex;
532- output list< DAE . Exp > outConditionList;
533- output list< BackendDAE . Var > outVars;
534- output list< DAE . Statement > outStmts;
535- output Integer outIndex;
519+ output list< DAE . Exp > outConditionList = {};
520+ output list< BackendDAE . Var > outVars = {};
521+ output list< DAE . Statement > outStmts = {};
522+ output Integer outIndex = inIndex;
523+ protected
524+ list< BackendDAE . Var > vars1;
525+ list< DAE . Statement > stmt1;
536526algorithm
537- (outConditionList, outVars, outStmts, outIndex) := match inConditionList
538- local
539- Integer index;
540- list< BackendDAE . Var > vars1, vars2;
541- list< DAE . Statement > stmt1, stmt2;
542-
543- DAE . Exp condition;
544- list< DAE . Exp > conditionList;
545-
546- case {} equation
547- then ({}, {}, {}, inIndex);
548-
549- case condition::conditionList equation
550- (condition, vars1, stmt1, index) = encapsulateWhenConditions_Algorithms1(condition, inSource, inIndex);
551- (conditionList, vars2, stmt2, index) = encapsulateWhenConditions_AlgorithmsWithArrayConditions(conditionList, inSource, index);
552- vars1 = listAppend(vars1, vars2);
553- stmt1 = listAppend(stmt1, stmt2);
554- then (condition::conditionList, vars1, stmt1, index);
555-
556- else equation
557- Error . addMessage(Error . INTERNAL_ERROR , {"./Compiler/BackEnd/FindZeroCrossings.mo: function encapsulateWhenConditions_AlgorithmsWithArrayConditions failed" });
558- then fail();
559- end match;
527+ for condition in inConditionList loop
528+ (condition, vars1, stmt1, outIndex) := encapsulateWhenConditions_Algorithms1(condition, inSource, outIndex);
529+ outVars := List . append_reverse(vars1,outVars);
530+ outStmts := List . append_reverse(stmt1,outStmts);
531+ outConditionList := condition::outConditionList;
532+ end for ;
533+ outVars := listReverse(outVars);
534+ outStmts := listReverse(outStmts);
535+ outConditionList := listReverse(outConditionList);
560536end encapsulateWhenConditions_AlgorithmsWithArrayConditions;
561537
562538
0 commit comments