Package: IIterationStrategy

IIterationStrategy

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;
23:
24: import java.util.List;
25:
26: import org.overture.codegen.ir.SExpIR;
27: import org.overture.codegen.ir.SPatternIR;
28: import org.overture.codegen.ir.SStmIR;
29: import org.overture.codegen.ir.analysis.AnalysisException;
30: import org.overture.codegen.ir.declarations.AVarDeclIR;
31: import org.overture.codegen.ir.expressions.AIdentifierVarExpIR;
32: import org.overture.codegen.ir.statements.ALocalPatternAssignmentStmIR;
33:
34: public interface IIterationStrategy
35: {
36:         public List<AVarDeclIR> getOuterBlockDecls(AIdentifierVarExpIR setVar,
37:                         List<SPatternIR> patterns) throws AnalysisException;
38:
39:         public List<SStmIR> getPreForLoopStms(AIdentifierVarExpIR setVar,
40:                         List<SPatternIR> patterns, SPatternIR pattern);
41:
42:         public AVarDeclIR getForLoopInit(AIdentifierVarExpIR setVar,
43:                         List<SPatternIR> patterns, SPatternIR pattern);
44:
45:         public SExpIR getForLoopCond(AIdentifierVarExpIR setVar,
46:                         List<SPatternIR> patterns, SPatternIR pattern)
47:                         throws AnalysisException;
48:
49:         public SExpIR getForLoopInc(AIdentifierVarExpIR setVar,
50:                         List<SPatternIR> patterns, SPatternIR pattern);
51:
52:         public AVarDeclIR getNextElementDeclared(AIdentifierVarExpIR setVar,
53:                         List<SPatternIR> patterns, SPatternIR pattern)
54:                         throws AnalysisException;
55:
56:         public ALocalPatternAssignmentStmIR getNextElementAssigned(
57:                         AIdentifierVarExpIR setVar, List<SPatternIR> patterns,
58:                         SPatternIR pattern) throws AnalysisException;
59:
60:         public List<SStmIR> getForLoopStms(AIdentifierVarExpIR setVar,
61:                         List<SPatternIR> patterns, SPatternIR pattern);
62:
63:         public List<SStmIR> getPostOuterBlockStms(AIdentifierVarExpIR setVar,
64:                         List<SPatternIR> patterns);
65:
66:         public void setFirstBind(boolean firstBind);
67:
68:         public void setLastBind(boolean lastBind);
69: }