start of new file
[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 }