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 ActionVector {
00038
00039 int size = 0;
00040 Action [] data;
00041
00042 public ActionVector() { this(5); }
00043 public ActionVector(int capacity) {
00044 data = new Action[capacity];
00045 }
00046 public ActionVector(Action x) {
00047 this(5);
00048 if (x != null)
00049 addElement(x);
00050 }
00051 public void addElement(Action x) {
00052 if (x == null)
00053 throw new RuntimeException("Element cannot be null");
00054 if (size == data.length)
00055 expand();
00056 data[size++] = x;
00057 }
00058 public Action elementAt(int pos) {
00059 if (pos < 0 || pos >= size)
00060 throw new RuntimeException("Position invalid: " + pos);
00061 return data[pos];
00062 }
00063 void expand() {
00064 Action [] newData = new Action[data.length * 2];
00065 for (int i = 0; i < data.length; i++)
00066 newData[i] = data[i];
00067 data = newData;
00068 }
00069 public Action firstElement() { return elementAt(0); }
00070 public void insertElementAt(Action x, int pos) {
00071 if (x == null)
00072 throw new RuntimeException("Element cannot be null");
00073 if (size == data.length)
00074 expand();
00075 if (pos > size || pos < 0)
00076 throw new RuntimeException("Position invalid: " + pos);
00077 for (int i = size; i > pos; i--)
00078 data[i] = data[i-1];
00079 data[pos] = x;
00080 size++;
00081 }
00082 public int size() { return size; }
00083 }