This commit was manufactured by cvs2svn to create tag 'buildscript'.
[IRC.git] /
1 package IR.Tree;
2 import IR.NameDescriptor;
3 import IR.Descriptor;
4 import IR.VarDescriptor;
5 import IR.TagVarDescriptor;
6 import IR.TypeDescriptor;
7 import IR.FieldDescriptor;
8
9 public class NameNode extends ExpressionNode {
10   NameDescriptor name;
11   Descriptor vd;
12   FieldDescriptor fd;
13   ExpressionNode en;
14
15   public NameNode(NameDescriptor nd) {
16     this.name=nd;
17     this.vd=null;
18     this.fd=null;
19   }
20
21   public ExpressionNode getExpression() {
22     return en;
23   }
24
25   /* Gross hack */
26   public void setExpression(ExpressionNode en) {
27     this.en=en;
28   }
29
30   public void setVar(Descriptor vd) {
31     this.vd=vd;
32   }
33
34   public void setField(FieldDescriptor fd) {
35     this.fd=fd;
36   }
37
38   public FieldDescriptor getField() {
39     return fd;
40   }
41
42   public boolean isTag() {
43     return (vd instanceof TagVarDescriptor);
44   }
45
46   public VarDescriptor getVar() {
47     return (VarDescriptor) vd;
48   }
49
50   public TagVarDescriptor getTagVar() {
51     return (TagVarDescriptor) vd;
52   }
53
54   public TypeDescriptor getType() {
55     if (en!=null)
56       return en.getType();
57     else if (fd!=null)
58       return fd.getType();
59     else if (isTag())
60       return new TypeDescriptor(TypeDescriptor.TAG);
61     else
62       return ((VarDescriptor)vd).getType();
63   }
64
65   NameDescriptor getName() {
66     return name;
67   }
68
69   public String printNode(int indent) {
70     return name.toString();
71   }
72
73   public int kind() {
74     return Kind.NameNode;
75   }
76 }