bf7378691dbbdc6a543543215f67bb015da8cd7a
[IRC.git] / Robust / src / IR / Tree / NameNode.java
1 package IR.Tree;
2 import IR.NameDescriptor;
3 import IR.VarDescriptor;
4 import IR.TypeDescriptor;
5 import IR.FieldDescriptor;
6
7 public class NameNode extends ExpressionNode {
8     NameDescriptor name;
9     VarDescriptor vd;
10     FieldDescriptor fd;
11     ExpressionNode en;
12
13     public NameNode(NameDescriptor nd) {
14         this.name=nd;
15         this.vd=null;
16         this.fd=null;
17     }
18
19     public ExpressionNode getExpression() {
20         return en;
21     }
22
23     /* Gross hack */
24     public void setExpression(ExpressionNode en) {
25         this.en=en;
26     }
27
28     public void setVar(VarDescriptor vd) {
29         this.vd=vd;
30     }
31
32     public void setField(FieldDescriptor fd) {
33         this.fd=fd;
34     }
35
36     public FieldDescriptor getField() {
37         return fd;
38     }
39
40     public VarDescriptor getVar() {
41         return vd;
42     }
43
44     public TypeDescriptor getType() {
45         if (en!=null)
46             return en.getType();
47         else if (fd!=null)
48             return fd.getType();
49         else
50             return vd.getType();
51     }
52
53     NameDescriptor getName() {
54         return name;
55     }
56
57     public String printNode(int indent) {
58         return name.toString();
59     }
60
61     public int kind() {
62         return Kind.NameNode;
63     }
64 }