static void split( List<AslanppReference> one, List<AslanppReference> two, List<AslanppReference> intersection, List<AslanppReference> dif1, List<AslanppReference> dif2) { boolean mark[] = new boolean[two.size()]; Arrays.fill(mark, false); for (AslanppReference eOne : one) { boolean found = false; int i = 0; for (AslanppReference eTwo : two) { if (eOne.isTheSame(eTwo)) { if (intersection != null) { addIfNotContained(intersection, eTwo); found = true; mark[i] = true; } i++; } } if (!found && dif1 != null) { addIfNotContained(dif1, eOne); } } if (dif2 != null) { int i = 0; for (AslanppReference eTwo : two) { if (!mark[i]) { addIfNotContained(dif2, eTwo); } i++; } } }
@Override public boolean isTheSame(AslanppStatement stm) { if (stm instanceof AslanppAssignment) { return l.isTheSame(((AslanppAssignment) stm).l) && r.isTheSame(((AslanppAssignment) stm).r); } return false; }
static List<AslanppReference> addIfNotContained( List<AslanppReference> list, AslanppReference theElement) { for (AslanppReference aRef : list) { if (aRef.isTheSame(theElement)) return list; } list.add(theElement); return list; }
@Override public void print(int tabs, StringBuilder str) { super.print(tabs, str); l.print(0, str); str.append(" := "); r.print(0, str); str.append(";\n"); }