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