4a6932287957a374db36fecf6bdc9b9899a5e2f6
[IRC.git] / Robust / src / IR / FieldDescriptor.java
1 package IR;
2 import IR.Tree.Modifiers;
3 import IR.Tree.ExpressionNode;
4
5 /**
6  * Descriptor
7  *
8  * represents a symbol in the language (var name, function name, etc).
9  */
10
11 public class FieldDescriptor extends Descriptor {
12
13   public static FieldDescriptor arrayLength=new FieldDescriptor(new Modifiers(Modifiers.PUBLIC|Modifiers.FINAL), new TypeDescriptor(TypeDescriptor.INT), "length", null, false);
14
15   protected Modifiers modifier;
16   protected TypeDescriptor td;
17   protected String identifier;
18   protected ExpressionNode en;
19   private boolean isglobal;
20
21   public FieldDescriptor(Modifiers m, TypeDescriptor t, String identifier, ExpressionNode e, boolean isglobal) {
22     super(identifier);
23     this.modifier=m;
24     this.td=t;
25     this.en=e;
26     this.safename = "___" + name + "___";
27     this.uniqueid=count++;
28     this.isglobal=isglobal;
29   }
30
31   public ExpressionNode getExpressionNode(){
32       return en;
33   }
34
35   public boolean isStatic() {
36     return modifier.isStatic();
37   }
38   
39   public boolean isVolatile() {
40     return modifier.isVolatile();
41   }
42   
43   public boolean isGlobal() {
44     return isglobal;
45   }
46
47   public TypeDescriptor getType() {
48     return td;
49   }
50
51   public String toString() {
52     if (en==null)
53       return modifier.toString()+td.toString()+" "+getSymbol()+";";
54     else
55       return modifier.toString()+td.toString()+" "+getSymbol()+"="+en.printNode(0)+";";
56   }
57
58   public String toStringBrief() {
59     return td.toString()+" "+getSymbol();
60   }
61
62   public String toPrettyStringBrief() {
63     return td.toPrettyString()+" "+getSymbol();
64   }
65 }