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 TransVector {
00038
00039 int size = 0;
00040 Transformation [] data;
00041
00042 public TransVector() { this(5); }
00043 public TransVector(int capacity) {
00044 data = new Transformation[capacity];
00045 }
00046 public TransVector(Transformation x) {
00047 this(5);
00048 addElement(x);
00049 }
00050 public void addElement(Transformation 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 Transformation 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 Transformation [] newData = new Transformation[data.length * 2];
00064 for (int i = 0; i < data.length; i++)
00065 newData[i] = data[i];
00066 data = newData;
00067 }
00068 public Transformation firstElement() { return elementAt(0); }
00069 public int indexOf(Transformation x) {
00070 for (int i = 0; i < size; i++)
00071 if (data[i] == x)
00072 return i;
00073 return -1;
00074 }
00075 public void insertElementAt(Transformation x, int pos) {
00076 if (x == null)
00077 throw new RuntimeException("Element cannot be null");
00078 if (size == data.length)
00079 expand();
00080 if (pos > size || pos < 0)
00081 throw new RuntimeException("Position invalid: " + pos);
00082 for (int i = size; i > pos; i--)
00083 data[i] = data[i-1];
00084 data[pos] = x;
00085 size++;
00086 }
00087 public boolean removeElement(Transformation x) {
00088 int pos = 0;
00089 while (pos < size && data[pos] != x)
00090 pos++;
00091 if (pos == size)
00092 return false;
00093 for (int i = pos; i < size - 1; i++)
00094 data[i] = data[i+1];
00095 size--;
00096 return true;
00097 }
00098 public int size() { return size; }
00099 }