clean up some equal methods
[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 }