Package: SeqCompStrategy

SeqCompStrategy

nameinstructionbranchcomplexitylinemethod
SeqCompStrategy(TransAssistantIR, SExpIR, SExpIR, String, STypeIR, ILanguageIterator, ITempVarGen, IterationVarPrefixes)
M: 0 C: 13
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
getConditionalAdd(AIdentifierVarExpIR, List, SPatternIR)
M: 0 C: 39
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
getEmptyCollection()
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getForLoopStms(AIdentifierVarExpIR, List, SPatternIR)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: /*
2: * #%~
3: * VDM Code Generator
4: * %%
5: * Copyright (C) 2008 - 2014 Overture
6: * %%
7: * This program is free software: you can redistribute it and/or modify
8: * it under the terms of the GNU General Public License as
9: * published by the Free Software Foundation, either version 3 of the
10: * License, or (at your option) any later version.
11: *
12: * This program is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15: * GNU General Public License for more details.
16: *
17: * You should have received a copy of the GNU General Public
18: * License along with this program. If not, see
19: * <http://www.gnu.org/licenses/gpl-3.0.html>.
20: * #~%
21: */
22: package org.overture.codegen.trans.comp;
23:
24: import java.util.List;
25:
26: import org.overture.codegen.ir.ITempVarGen;
27: import org.overture.codegen.ir.SExpIR;
28: import org.overture.codegen.ir.SPatternIR;
29: import org.overture.codegen.ir.SStmIR;
30: import org.overture.codegen.ir.STypeIR;
31: import org.overture.codegen.ir.expressions.AEnumSeqExpIR;
32: import org.overture.codegen.ir.expressions.AIdentifierVarExpIR;
33: import org.overture.codegen.ir.statements.ASeqCompAddStmIR;
34: import org.overture.codegen.trans.IterationVarPrefixes;
35: import org.overture.codegen.trans.assistants.TransAssistantIR;
36: import org.overture.codegen.trans.iterator.ILanguageIterator;
37:
38: public class SeqCompStrategy extends CompStrategy
39: {
40:         protected SExpIR first;
41:
42:         public SeqCompStrategy(TransAssistantIR transformationAssitant,
43:                         SExpIR first, SExpIR predicate, String var, STypeIR compType,
44:                         ILanguageIterator langIterator, ITempVarGen tempGen,
45:                         IterationVarPrefixes iteVarPrefixes)
46:         {
47:                 super(transformationAssitant, predicate, var, compType, langIterator, tempGen, iteVarPrefixes);
48:
49:                 this.first = first;
50:         }
51:
52:         @Override
53:         protected SExpIR getEmptyCollection()
54:         {
55:                 return new AEnumSeqExpIR();
56:         }
57:
58:         @Override
59:         protected List<SStmIR> getConditionalAdd(AIdentifierVarExpIR setVar,
60:                         List<SPatternIR> patterns, SPatternIR pattern)
61:         {
62:                 AIdentifierVarExpIR seqCompResult = new AIdentifierVarExpIR();
63:                 seqCompResult.setType(compType.clone());
64:                 seqCompResult.setName(idPattern.getName());
65:                 seqCompResult.setIsLambda(false);
66:                 seqCompResult.setIsLocal(true);
67:
68:                 ASeqCompAddStmIR add = new ASeqCompAddStmIR();
69:                 add.setSeq(seqCompResult);
70:                 add.setElement(first.clone());
71:
72:                 return consConditionalAdd(seqCompResult, add);
73:         }
74:
75:         @Override
76:         public List<SStmIR> getForLoopStms(AIdentifierVarExpIR setVar,
77:                         List<SPatternIR> patterns, SPatternIR pattern)
78:         {
79:                 return getConditionalAdd(setVar, patterns, pattern);
80:         }
81: }