bug fixes
[IRC.git] / Robust / src / Benchmarks / SingleTM / Bayes / Vector_t.java
1 public class Vector_t {
2   int size;
3   int capacity;
4   Object[] elements;
5
6   public Vector_t() {
7   }
8
9   /* =============================================================================
10    * Vector_alloc
11    * -- Returns null if failed
12    * =============================================================================
13    */
14   public Vector_t(int initCapacity) {
15     int capacity = Math.imax(initCapacity, 1);
16     this.size = 0;
17     this.capacity = capacity;
18     this.elements = new Object[capacity];
19   }
20
21   /* =============================================================================
22    * Vector_free
23    * =============================================================================
24    */
25   public void clear() {
26     elements = null;
27   }
28
29   /* =============================================================================
30    * Vector_at
31    * -- Returns null if failed
32    * =============================================================================
33    */
34   public Object vector_at (int i) {
35     return (elements[i]);
36   }
37
38
39   /* =============================================================================
40    * Vector_pushBack
41    * -- Returns false if fail, else true
42    * =============================================================================
43    */
44   public boolean vector_pushBack (Object dataPtr) {
45     if (size == capacity) {
46       int newCapacity = capacity * 2;
47       Object[] newElements = new Object[newCapacity];
48
49       capacity = newCapacity;
50       for (int i = 0; i < size; i++) {
51         newElements[i] = elements[i];
52       }
53       elements = null;
54       elements = newElements;
55     }
56
57     elements[size++] = dataPtr;
58
59     return true;
60   }
61
62   /* =============================================================================
63    * Vector_popBack
64    * -- Returns null if fail, else returns last element
65    * =============================================================================
66    */
67   public Object vector_popBack () {
68     if (size < 1) {
69       return null;
70     }
71     Object o=elements[--(size)];
72     elements[size]=null;
73     return o;
74   }
75
76   /* =============================================================================
77    * Vector_getSize
78    * =============================================================================
79    */
80   public int
81     vector_getSize ()
82     {
83       return (size);
84     }
85
86   /* =============================================================================
87    * Vector_clear
88    * =============================================================================
89    */
90   public void vector_clear () {
91     while(size>0)
92       elements[--size]=null;
93   }
94   
95   /* =============================================================================
96    * Vector_sort
97    * =============================================================================
98    */
99   public void
100     vector_sort ()
101     {
102       QuickSort.sort(elements, 0, size);
103     }
104
105   /* =============================================================================
106    * Vector_copy
107    * =============================================================================
108    */
109   public static boolean
110     vector_copy (Vector_t dstVectorPtr, Vector_t srcVectorPtr)
111     {
112       int dstCapacity = dstVectorPtr.capacity;
113       int srcSize = srcVectorPtr.size;
114       if (dstCapacity < srcSize) {
115         int srcCapacity = srcVectorPtr.capacity;
116         Object[] elements = new Object[srcCapacity];
117
118         dstVectorPtr.elements = null;
119         dstVectorPtr.elements = elements;
120         dstVectorPtr.capacity = srcCapacity;
121       }
122
123       for(int i = 0; i< srcSize; i++) {
124         dstVectorPtr.elements[i] = srcVectorPtr.elements[i];
125       }
126
127       dstVectorPtr.size = srcSize;
128
129       return true;
130     }
131 }