try to generate in-place code
[cdsspec-compiler.git] / src / edu / uci / eecs / specCompiler / specExtraction / ActionSubConstruct.java
1 package edu.uci.eecs.specCompiler.specExtraction;
2
3 import java.util.ArrayList;
4
5 public class ActionSubConstruct {
6         public static class DefineVar {
7                 public final String varType;
8                 public final String varName;
9                 public final String varExpr;
10                 private String newVarName;
11
12                 public DefineVar(String varType, String varName, String varExpr) {
13                         this.varType = varType;
14                         this.varName = varName;
15                         this.varExpr = varExpr;
16                         this.newVarName = null;
17                 }
18
19                 public void renameVarName(String newName) {
20                         this.newVarName = newName;
21                 }
22
23                 public String getNewVarName() {
24                         return this.newVarName;
25                 }
26
27                 public String toString() {
28                         if (newVarName == null)
29                                 return varType + " " + varName + " = " + varExpr;
30                         else
31                                 return varType + " " + varName + "(" + newVarName + ")" + " = "
32                                                 + varExpr;
33                 }
34         }
35
36         public final ArrayList<DefineVar> defineVars;
37         public final String code;
38
39         public ActionSubConstruct(ArrayList<DefineVar> defineVars, String code) {
40                 this.code = code;
41                 this.defineVars = defineVars;
42         }
43
44         public void addDefineVar(DefineVar defineVar) {
45                 defineVars.add(defineVar);
46         }
47
48         public String toString() {
49                 StringBuilder sb = new StringBuilder();
50                 sb.append("@Action:\n");
51                 for (DefineVar defineVar : defineVars) {
52                         sb.append("\t@DefineVar: " + defineVar + "\n");
53                 }
54                 sb.append("\t@Code: " + code);
55                 return sb.toString();
56         }
57 }