helpful progress reporting
[IRC.git] / Robust / src / IR / Flat / FlatOpNode.java
1 package IR.Flat;
2 import java.util.Vector;
3 import IR.*;
4
5 public class FlatOpNode extends FlatNode {
6   TempDescriptor dest;
7   TempDescriptor left;
8   TempDescriptor right;
9   Operation op;
10
11   public FlatOpNode(TempDescriptor dest, TempDescriptor left, TempDescriptor right, Operation op) {
12     this.dest=dest;
13     this.left=left;
14     this.right=right;
15     this.op=op;
16   }
17
18   public TempDescriptor getDest() {
19     return dest;
20   }
21
22   public TempDescriptor getLeft() {
23     return left;
24   }
25
26   public TempDescriptor getRight() {
27     return right;
28   }
29
30   public Operation getOp() {
31     return op;
32   }
33
34   public String toString() {
35     String str = "FlatOpNode_"+dest.toString();
36     if (right!=null)
37       str += "="+left.toString()+op.toString()+right.toString();
38     else if (op.getOp()==Operation.ASSIGN)
39       str += " = "+left.toString();
40     else
41       str += " "+op.toString() +" "+left.toString();
42     return str;
43   }
44
45   public int kind() {
46     return FKind.FlatOpNode;
47   }
48
49   public TempDescriptor [] readsTemps() {
50     if (right!=null)
51       return new TempDescriptor [] {left,right};
52     else
53       return new TempDescriptor [] {left};
54   }
55
56   public TempDescriptor [] writesTemps() {
57     return new TempDescriptor [] {dest};
58   }
59 }