more code
[IRC.git] / Robust / src / IR / Flat / TempObject.java
1 package IR.Flat;
2 import IR.*;
3 import java.util.*;
4
5 public class TempObject {
6     ParamsObject params;
7     private Vector pointerparams;
8     private Vector primitiveparams;
9     private MethodDescriptor method;
10     private int tag;
11     private Hashtable paramtotemp;
12     private Hashtable temptostore;
13     private int count;
14
15
16     public TempObject(ParamsObject p, MethodDescriptor md, int tag) {
17         params=p;
18         pointerparams=new Vector();
19         primitiveparams=new Vector();
20         paramtotemp=new Hashtable();
21         temptostore=new Hashtable();
22         this.method=md;
23         this.tag=tag;
24         count=0;
25     }
26
27     public void addPtr(TempDescriptor t) {
28         if (!params.containsTemp(t)) {
29             Position p=new Position(true, pointerparams.size());
30             pointerparams.add(t);
31             paramtotemp.put(new Integer(count++), t);
32             temptostore.put(t,p);
33         }
34     }
35
36     public void addPrim(TempDescriptor t) {
37         if (!params.containsTemp(t)) {
38             Position p=new Position(false, primitiveparams.size());
39             primitiveparams.add(t);
40             paramtotemp.put(new Integer(count++), t);
41             temptostore.put(t,p);
42         }
43     }
44
45     int numPointers() {
46         return pointerparams.size();
47     }
48
49     TempDescriptor getPointer(int i) {
50         return (TempDescriptor) pointerparams.get(i);
51     }
52     int numPrimitives() {
53         return primitiveparams.size();
54     }
55     TempDescriptor getPrimitive(int i) {
56         return (TempDescriptor) primitiveparams.get(i);
57     }
58     static class Position {
59         boolean inStruct;
60         int position;
61         Position(boolean inStruct, int position) {
62             this.inStruct=inStruct;
63             this.position=position;
64         }
65     }
66 }