00001 package edu.ksu.cis.bandera.bir;
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 import ca.mcgill.sable.util.*;
00036
00037 public class ThreadVector {
00038
00039 int size = 0;
00040 BirThread [] data;
00041
00042 public ThreadVector() { this(5); }
00043 public ThreadVector(int capacity) {
00044 data = new BirThread[capacity];
00045 }
00046 public ThreadVector(BirThread x) {
00047 this(5);
00048 addElement(x);
00049 }
00050 public void addElement(BirThread x) {
00051 if (x == null)
00052 throw new RuntimeException("Element cannot be null");
00053 if (size == data.length)
00054 expand();
00055 data[size++] = x;
00056 }
00057 public BirThread elementAt(int pos) {
00058 if (pos < 0 || pos >= size)
00059 throw new RuntimeException("Position invalid: " + pos);
00060 return data[pos];
00061 }
00062 void expand() {
00063 BirThread [] newData = new BirThread[data.length * 2];
00064 for (int i = 0; i < data.length; i++)
00065 newData[i] = data[i];
00066 data = newData;
00067 }
00068 public BirThread firstElement() { return elementAt(0); }
00069 public void insertElementAt(BirThread x, int pos) {
00070 if (x == null)
00071 throw new RuntimeException("Element cannot be null");
00072 if (size == data.length)
00073 expand();
00074 if (pos > size || pos < 0)
00075 throw new RuntimeException("Position invalid: " + pos);
00076 for (int i = size; i > pos; i--)
00077 data[i] = data[i-1];
00078 data[pos] = x;
00079 size++;
00080 }
00081 public int size() { return size; }
00082 }