home *** CD-ROM | disk | FTP | other *** search
Wrap
package COM.objectspace.jgl; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Enumeration; public class OrderedSet implements Set { transient Tree myTree; public OrderedSet() { this.myTree = new Tree(false, false, this); } public OrderedSet(boolean var1) { this.myTree = new Tree(false, var1, this); } public OrderedSet(BinaryPredicate var1) { this.myTree = new Tree(false, false, var1, this); } public OrderedSet(BinaryPredicate var1, boolean var2) { this.myTree = new Tree(false, var2, var1, this); } public OrderedSet(OrderedSet var1) { synchronized(var1){} try { this.myTree = new Tree(var1.myTree); } catch (Throwable var4) { throw var4; } } public boolean allowsDuplicates() { return this.myTree.myInsertAlways; } public synchronized Object clone() { return new OrderedSet(this); } public synchronized void copy(OrderedSet var1) { synchronized(var1){} try { Tree var4 = this.myTree; Tree var5 = var1.myTree; if (var4 != var5) { var4.clear(); var4.copyTree(var5); } } catch (Throwable var7) { throw var7; } } public synchronized String toString() { return "OrderedSet" + Printing.toString(this.start(), this.finish()); } public synchronized Enumeration elements() { Tree var1 = this.myTree; return new OrderedSetIterator(var1, var1.myHeader.left, (OrderedSet)var1.myContainer); } public ForwardIterator start() { return this.begin(); } public ForwardIterator finish() { return this.end(); } public synchronized OrderedSetIterator begin() { Tree var1 = this.myTree; return new OrderedSetIterator(var1, var1.myHeader.left, (OrderedSet)var1.myContainer); } public synchronized OrderedSetIterator end() { Tree var1 = this.myTree; return new OrderedSetIterator(var1, var1.myHeader, (OrderedSet)var1.myContainer); } public boolean isEmpty() { return this.myTree.size == 0; } public int size() { return this.myTree.size; } public int maxSize() { Tree var1 = this.myTree; return Integer.MAX_VALUE; } public boolean equals(Object var1) { return var1 instanceof OrderedSet && this.equals((OrderedSet)var1); } public synchronized boolean equals(OrderedSet var1) { synchronized(var1){} boolean var2; try { var2 = this.size() == var1.size() && Comparing.equal(this.start(), this.finish(), var1.start()); } catch (Throwable var8) { throw var8; } return var2; } public synchronized int hashCode() { return Hashing.orderedHash(this.start(), this.finish()); } public synchronized void swap(OrderedSet var1) { synchronized(var1){} try { Tree var4 = this.myTree; this.myTree = var1.myTree; var1.myTree = var4; } catch (Throwable var6) { throw var6; } } public synchronized void clear() { this.myTree.clear(); } public synchronized int remove(Object var1) { Pair var2 = this.myTree.remove(var1); return ((Number)var2.second).intValue(); } public synchronized int remove(Object var1, int var2) { Pair var3 = this.myTree.remove(var1, var2); return ((Number)var3.second).intValue(); } public synchronized Object remove(Enumeration var1) { if (!(var1 instanceof OrderedSetIterator)) { throw new IllegalArgumentException("Enumeration not a OrderedSetIterator"); } else if (((OrderedSetIterator)var1).myOrderedSet != this) { throw new IllegalArgumentException("Enumeration not for this OrderedSet"); } else { Tree.TreeNode var2 = this.myTree.remove(((OrderedSetIterator)var1).myNode); return var2 == null ? null : var2.object; } } public synchronized int remove(Enumeration var1, Enumeration var2) { if (var1 instanceof OrderedSetIterator && var2 instanceof OrderedSetIterator) { if (((OrderedSetIterator)var1).myOrderedSet == this && ((OrderedSetIterator)var2).myOrderedSet == this) { Tree var3 = this.myTree; Tree.TreeNode var4 = ((OrderedSetIterator)var1).myNode; Tree.TreeNode var5 = ((OrderedSetIterator)var2).myNode; Pair var6 = var3.remove(var4, var5, var3.size); return ((Number)var6.second).intValue(); } else { throw new IllegalArgumentException("Enumeration not for this OrderedSet"); } } else { throw new IllegalArgumentException("Enumeration not a OrderedSetIterator"); } } public synchronized OrderedSetIterator find(Object var1) { return new OrderedSetIterator(this.myTree, this.myTree.find(var1), this); } public synchronized int count(Object var1) { return this.myTree.count(var1); } public synchronized OrderedSetIterator lowerBound(Object var1) { Tree var2; return new OrderedSetIterator(var2 = this.myTree, (Tree.TreeNode)var2.equalRange(var1).first, this); } public synchronized OrderedSetIterator upperBound(Object var1) { Tree var2; return new OrderedSetIterator(var2 = this.myTree, (Tree.TreeNode)var2.equalRange(var1).second, this); } public synchronized Range equalRange(Object var1) { Pair var2 = this.myTree.equalRange(var1); return new Range(new OrderedSetIterator(this.myTree, (Tree.TreeNode)var2.first, this), new OrderedSetIterator(this.myTree, (Tree.TreeNode)var2.second, this)); } public BinaryPredicate getComparator() { return this.myTree.myComparator; } public synchronized Object add(Object var1) { if (var1 == null) { throw new NullPointerException(); } else { Tree var2 = this.myTree; Tree.InsertResult var3 = var2.insertAux(var1, true); return var3.ok ? null : var3.node.object; } } public synchronized Object get(Object var1) { Tree.TreeNode var2 = this.myTree.find(var1); if (var2.object == null) { return null; } else { return var2.object.equals(var1) ? var2.object : null; } } public synchronized Object put(Object var1) { if (var1 == null) { throw new NullPointerException(); } else { Tree var2 = this.myTree; Tree.InsertResult var4 = var2.insertAux(var1, false); if (var4.ok) { return null; } else { Object var3 = var4.node.object; var4.node.object = var1; return var3; } } } public synchronized OrderedSet union(OrderedSet var1) { if (!this.myTree.myInsertAlways && !var1.myTree.myInsertAlways) { OrderedSet var2 = new OrderedSet(this.getComparator(), this.allowsDuplicates()); InsertIterator var5 = new InsertIterator(var2); BinaryPredicate var6 = this.getComparator(); SetOperations.setUnion(this.start(), this.finish(), var1.start(), var1.finish(), var5, var6); return var2; } else { throw new InvalidOperationException("union operation invalid on multisets"); } } public synchronized OrderedSet intersection(OrderedSet var1) { synchronized(var1){} OrderedSet var2; try { if (this.myTree.myInsertAlways || var1.myTree.myInsertAlways) { throw new InvalidOperationException("intersection operation invalid on multisets"); } OrderedSet var5 = new OrderedSet(this.getComparator(), this.allowsDuplicates()); InsertIterator var8 = new InsertIterator(var5); BinaryPredicate var9 = this.getComparator(); SetOperations.setIntersection(this.start(), this.finish(), var1.start(), var1.finish(), var8, var9); var2 = var5; } catch (Throwable var11) { throw var11; } return var2; } public synchronized OrderedSet difference(OrderedSet var1) { synchronized(var1){} OrderedSet var2; try { if (this.myTree.myInsertAlways || var1.myTree.myInsertAlways) { throw new InvalidOperationException("difference operation invalid on multisets"); } OrderedSet var5 = new OrderedSet(this.getComparator(), this.allowsDuplicates()); InsertIterator var8 = new InsertIterator(var5); BinaryPredicate var9 = this.getComparator(); SetOperations.setDifference(this.start(), this.finish(), var1.start(), var1.finish(), var8, var9); var2 = var5; } catch (Throwable var11) { throw var11; } return var2; } public synchronized OrderedSet symmetricDifference(OrderedSet var1) { synchronized(var1){} OrderedSet var2; try { if (this.myTree.myInsertAlways || var1.myTree.myInsertAlways) { throw new InvalidOperationException("symmetricDifference operation invalid on multisets"); } OrderedSet var5 = new OrderedSet(this.getComparator(), this.allowsDuplicates()); InsertIterator var8 = new InsertIterator(var5); BinaryPredicate var9 = this.getComparator(); SetOperations.setSymmetricDifference(this.start(), this.finish(), var1.start(), var1.finish(), var8, var9); var2 = var5; } catch (Throwable var11) { throw var11; } return var2; } public synchronized boolean subsetOf(OrderedSet var1) { synchronized(var1){} boolean var2; try { if (this.myTree.myInsertAlways || var1.myTree.myInsertAlways) { throw new InvalidOperationException("subsetOf operation invalid on multisets"); } BinaryPredicate var7 = this.getComparator(); var2 = SetOperations.includes(var1.start(), var1.finish(), this.start(), this.finish(), var7); } catch (Throwable var9) { throw var9; } return var2; } public synchronized boolean properSubsetOf(OrderedSet var1) { synchronized(var1){} boolean var2; try { if (this.myTree.myInsertAlways || var1.myTree.myInsertAlways) { throw new InvalidOperationException("properSubsetOf operation invalid on multisets"); } var2 = this.size() < var1.size() && this.subsetOf(var1); } catch (Throwable var6) { throw var6; } return var2; } private synchronized void writeObject(ObjectOutputStream var1) throws IOException { var1.defaultWriteObject(); var1.writeBoolean(this.allowsDuplicates()); var1.writeObject(this.getComparator()); var1.writeInt(this.size()); Copying.copy(this.begin(), this.end(), new ObjectOutputStreamIterator(var1)); } private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException { var1.defaultReadObject(); boolean var2 = var1.readBoolean(); BinaryPredicate var3 = (BinaryPredicate)var1.readObject(); this.myTree = new Tree(false, var2, var3, this); int var4 = var1.readInt(); while(var4-- > 0) { this.add(var1.readObject()); } } }