1 20 21 package JFlex; 22 23 29 final public class StatePairList { 30 31 34 int p []; 35 int q []; 36 37 int num; 38 39 public StatePairList() { 40 p = new int [8]; 41 q = new int [8]; 42 num = 0; 43 } 44 45 public void addPair(int i, int j) { 46 for (int x = 0; x < num; x++) 47 if (p[x] == i && q[x] == j) return; 48 49 if (num >= p.length) increaseSize(num); 50 51 p[num] = i; 52 q[num] = j; 53 54 num++; 55 } 56 57 public void markAll(StatePairList [] [] list, boolean [] [] equiv) { 58 for (int x = 0; x < num; x++) { 59 int i = p[x]; 60 int j = q[x]; 61 62 if (equiv[i][j]) { 63 equiv[i][j] = false; 64 if (list[i][j] != null) 65 list[i][j].markAll(list, equiv); 66 } 67 } 68 } 69 70 private void increaseSize(int length) { 71 length = Math.max(length+1, 4*p.length); 72 Out.debug("increasing length to "+length); 74 int pn [] = new int[length]; 75 int qn [] = new int[length]; 76 77 System.arraycopy(p, 0, pn, 0, p.length); 78 System.arraycopy(q, 0, qn, 0, q.length); 79 80 p = pn; 81 q = qn; 82 } 83 } 84 | Popular Tags |