changes
[IRC.git] / Robust / src / IR / Flat / FlatLiteralNode.java
1 package IR.Flat;
2 import IR.TypeDescriptor;
3
4 public class FlatLiteralNode extends FlatNode {
5   Object value;
6   TypeDescriptor type;
7   TempDescriptor dst;
8
9   public FlatLiteralNode(TypeDescriptor type, Object o, TempDescriptor dst) {
10     this.type=type;
11     value=o;
12     this.dst=dst;
13   }
14
15   public FlatNode clone(TempMap t) {
16     return new FlatLiteralNode(type, value, t.tempMap(dst));
17   }
18   public void rewriteUse(TempMap t) {
19   }
20   public void rewriteDst(TempMap t) {
21     dst=t.tempMap(dst);
22   }
23   public TypeDescriptor getType() {
24     return type;
25   }
26
27   public TempDescriptor getDst() {
28     return dst;
29   }
30
31   public Object getValue() {
32     return value;
33   }
34
35   public String toString() {
36     String str = "FlatLiteralNode_"+dst;
37     if (value==null)
38       str += "=null";
39     else
40       str += "="+escapeString(value.toString());
41     return str;
42   }
43   protected static String escapeString(String st) {
44     String new_st="";
45     for(int i=0; i<st.length(); i++) {
46       char x=st.charAt(i);
47       if (x=='\n')
48         new_st+="\\n";
49       else if (x=='\r')
50         new_st+="\\r";
51       else if (x=='"')
52         new_st+="\\\"";
53       else if (x=='\'')
54         new_st+="\\\'";
55       else if (x=='\\')
56         new_st+="\\\\";
57       else new_st+=x;
58     }
59     return new_st;
60   }
61
62   public int kind() {
63     return FKind.FlatLiteralNode;
64   }
65
66   public TempDescriptor [] writesTemps() {
67     return new TempDescriptor[] {dst};
68   }
69 }