add more comments
[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         if (right!=null)
36             return dest.toString()+"="+left.toString()+op.toString()+right.toString();
37         else if (op.getOp()==Operation.ASSIGN)
38             return dest.toString()+" = "+left.toString();
39         else
40             return dest.toString()+" "+op.toString() +" "+left.toString();
41     }
42
43     public int kind() {
44         return FKind.FlatOpNode;
45     }
46
47     public TempDescriptor [] readsTemps() {
48         if (right!=null)
49             return new TempDescriptor [] {left,right};
50         else
51             return new TempDescriptor [] {left};
52     }
53
54     public TempDescriptor [] writesTemps() {
55         return new TempDescriptor [] {dest};
56     }
57 }