switch to spaces only..
[IRC.git] / Robust / src / Analysis / Prefetch / IndexDescriptor.java
1 /*
2  * IndexDescriptor.java
3  * Author: Alokika Dash adash@uci.edu
4  * Date: 11-02-2007
5  */
6
7 package Analysis.Prefetch;
8 import IR.Flat.*;
9 import java.util.*;
10 import IR.*;
11
12 /**
13  * Descriptor
14  *
15  * This class is used to represent the index and index offset of Arrays in
16  * a prefetch pair
17  * for eg: for a prefetch pair a[i+z], an instance of this class stores var i and var z
18  */
19
20 public class IndexDescriptor extends Descriptor {
21   public ArrayList<TempDescriptor> tddesc;
22   public Integer offset;
23
24   public IndexDescriptor(Integer offset) {
25     super(offset.toString());
26     this.offset = offset;
27     this.tddesc=new ArrayList<TempDescriptor>();
28   }
29
30   public IndexDescriptor(TempDescriptor tdesc, Integer offset) {
31     super(tdesc.toString());
32     tddesc = new ArrayList<TempDescriptor>();
33     tddesc.add(tdesc);
34     this.offset = offset;
35   }
36
37   public IndexDescriptor() {
38     super("Empty");
39     tddesc = new ArrayList<TempDescriptor>();
40     offset = 0;
41   }
42
43   public IndexDescriptor(ArrayList<TempDescriptor> tdesc, Integer offset) {
44     super(tdesc.toString());
45     tddesc = new ArrayList<TempDescriptor>();
46     tddesc.addAll(tdesc);
47     this.offset = offset;
48   }
49
50   public ArrayList<TempDescriptor> getTempDesc() {
51     return tddesc;
52   }
53
54   public TempDescriptor getTempDescAt(int index) {
55     return ((TempDescriptor) (tddesc.get(index)));
56   }
57
58   public int getOffset() {
59     return offset.intValue();
60   }
61
62   public String toString() {
63     String label="[";
64     if(getTempDesc() == null) {
65       label += offset.toString();
66       return label;
67     } else {
68       ListIterator lit = getTempDesc().listIterator();
69       for(; lit.hasNext(); ) {
70         TempDescriptor td = (TempDescriptor) lit.next();
71         label += td.toString()+"+";
72       }
73       label +=offset.toString();
74     }
75     label += "]";
76     return label;
77   }
78
79   public int hashCode() {
80     int hashcode = (Integer) offset.hashCode();
81     hashcode^=tddesc.hashCode();
82     return hashcode;
83   }
84
85   public boolean equals(Object o) {
86     if(o instanceof IndexDescriptor) {
87       IndexDescriptor idesc = (IndexDescriptor) o;
88       return offset==idesc.offset&&
89              tddesc.equals(idesc.tddesc);
90     }
91     return false;
92   }
93 }