working genome on byte strings
[IRC.git] / Robust / src / Benchmarks / SingleTM / Genome / Hashtable.java
1 public class Hashtable {
2     List buckets[];
3     int numBucket;
4     int size;
5     int resizeRatio;
6     int growthFactor;
7     
8     public Hashtable (int initNumBucket, int resizeRatio, int growthFactor) {
9       allocBuckets(initNumBucket);
10       numBucket = initNumBucket;
11       size = 0;
12       resizeRatio = ((resizeRatio < 0) ? 3 : resizeRatio);
13       growthFactor = ((growthFactor < 0) ? 3 : growthFactor);
14     }
15     
16     public boolean TMhashtable_insert (ByteString keyPtr, ByteString dataPtr) {
17       int i = keyPtr.hashCode() % numBucket;
18
19       Pair findPair = new Pair();
20       findPair.firstPtr = keyPtr;
21       Pair pairPtr = buckets[i].find(findPair);
22       if (pairPtr != null) {
23           return false;
24       }
25
26       Pair insertPtr = new Pair(keyPtr, dataPtr);
27
28       /* Add new entry  */
29       if (buckets[i].insert(insertPtr) == false) {
30           return false;
31       }
32
33       size++;
34
35       return true;
36     }
37     
38     void allocBuckets (int numBucket) {
39       int i;
40       /* Allocate bucket: extra bucket is dummy for easier iterator code */
41       buckets = new List[numBucket+1];
42       
43       for (i = 0; i < (numBucket + 1); i++) {
44           List chainPtr = new List();
45           buckets[i] = chainPtr;
46       }
47     }
48 }