home *** CD-ROM | disk | FTP | other *** search
- package COM.objectspace.jgl;
-
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.util.Enumeration;
-
- public class OrderedMap extends Map {
- transient Tree myTree;
-
- public OrderedMap() {
- this.myTree = new Tree(true, false, this);
- }
-
- public OrderedMap(boolean var1) {
- this.myTree = new Tree(true, var1, this);
- }
-
- public OrderedMap(BinaryPredicate var1) {
- this.myTree = new Tree(true, false, var1, this);
- }
-
- public OrderedMap(BinaryPredicate var1, boolean var2) {
- this.myTree = new Tree(true, var2, var1, this);
- }
-
- public OrderedMap(OrderedMap 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 OrderedMap(this);
- }
-
- public synchronized void copy(OrderedMap 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 "OrderedMap" + Printing.toString(this.start(), this.finish());
- }
-
- public synchronized Enumeration elements() {
- Tree var1 = this.myTree;
- return new OrderedMapIterator(var1, var1.myHeader.left, (OrderedMap)var1.myContainer, 3);
- }
-
- public ForwardIterator start() {
- return this.begin();
- }
-
- public ForwardIterator finish() {
- return this.end();
- }
-
- public synchronized OrderedMapIterator begin() {
- Tree var1 = this.myTree;
- return new OrderedMapIterator(var1, var1.myHeader.left, (OrderedMap)var1.myContainer, 1);
- }
-
- public synchronized OrderedMapIterator end() {
- Tree var1 = this.myTree;
- return new OrderedMapIterator(var1, var1.myHeader, (OrderedMap)var1.myContainer, 1);
- }
-
- 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 OrderedMap && this.equals((OrderedMap)var1);
- }
-
- public synchronized boolean equals(OrderedMap 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() {
- Tree var1 = this.myTree;
- OrderedMapIterator var3 = new OrderedMapIterator(var1, var1.myHeader.left, (OrderedMap)var1.myContainer, 2);
- Tree var2 = this.myTree;
- OrderedMapIterator var4 = new OrderedMapIterator(var2, var2.myHeader, (OrderedMap)var2.myContainer, 2);
- return Hashing.orderedHash(var3, var4);
- }
-
- public synchronized void swap(OrderedMap 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 Object remove(Object var1) {
- return this.myTree.remove(var1).first;
- }
-
- 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 OrderedMapIterator)) {
- throw new IllegalArgumentException("Enumeration not an OrderedMapIterator");
- } else if (((OrderedMapIterator)var1).myOrderedMap != this) {
- throw new IllegalArgumentException("Enumeration not for this OrderedMap");
- } else {
- Tree.TreeNode var2 = this.myTree.remove(((OrderedMapIterator)var1).myNode);
- return var2 == null ? null : var2.object;
- }
- }
-
- public synchronized int remove(Enumeration var1, Enumeration var2) {
- if (var1 instanceof OrderedMapIterator && var2 instanceof OrderedMapIterator) {
- if (((OrderedMapIterator)var1).myOrderedMap == this && ((OrderedMapIterator)var2).myOrderedMap == this) {
- Tree var3 = this.myTree;
- Tree.TreeNode var4 = ((OrderedMapIterator)var1).myNode;
- Tree.TreeNode var5 = ((OrderedMapIterator)var2).myNode;
- Pair var6 = var3.remove(var4, var5, var3.size);
- return ((Number)var6.second).intValue();
- } else {
- throw new IllegalArgumentException("Enumeration not for this OrderedMap");
- }
- } else {
- throw new IllegalArgumentException("Enumeration not an OrderedMapIterator");
- }
- }
-
- public synchronized OrderedMapIterator find(Object var1) {
- return new OrderedMapIterator(this.myTree, this.myTree.find(var1), this, 1);
- }
-
- public synchronized int count(Object var1) {
- return this.myTree.count(var1);
- }
-
- public synchronized int countValues(Object var1) {
- Tree var2 = this.myTree;
- OrderedMapIterator var10000 = new OrderedMapIterator(var2, var2.myHeader.left, (OrderedMap)var2.myContainer, 3);
- var2 = this.myTree;
- return Counting.count(var10000, new OrderedMapIterator(var2, var2.myHeader, (OrderedMap)var2.myContainer, 3), var1);
- }
-
- public synchronized OrderedMapIterator lowerBound(Object var1) {
- Tree var2;
- return new OrderedMapIterator(var2 = this.myTree, (Tree.TreeNode)var2.equalRange(var1).first, this, 1);
- }
-
- public synchronized OrderedMapIterator upperBound(Object var1) {
- Tree var2;
- return new OrderedMapIterator(var2 = this.myTree, (Tree.TreeNode)var2.equalRange(var1).second, this, 1);
- }
-
- public synchronized Range equalRange(Object var1) {
- Pair var2 = this.myTree.equalRange(var1);
- return new Range(new OrderedMapIterator(this.myTree, (Tree.TreeNode)var2.first, this, 1), new OrderedMapIterator(this.myTree, (Tree.TreeNode)var2.second, this, 1));
- }
-
- public BinaryPredicate getComparator() {
- return this.myTree.myComparator;
- }
-
- public synchronized Object get(Object var1) {
- return this.myTree.get(var1);
- }
-
- public synchronized Object put(Object var1, Object var2) {
- if (var1 != null && var2 != null) {
- Tree var3 = this.myTree;
- Pair var4 = new Pair(var1, var2);
- Tree.InsertResult var6 = var3.insertAux(var4, false);
- if (var6.ok) {
- return null;
- } else {
- var4 = (Pair)var6.node.object;
- Object var5 = var4.second;
- var4.second = var2;
- return var5;
- }
- } else {
- throw new NullPointerException();
- }
- }
-
- public Object add(Object var1) {
- if (var1 == null) {
- throw new NullPointerException();
- } else if (!(var1 instanceof Pair)) {
- throw new IllegalArgumentException("object is not Pair");
- } else if (((Pair)var1).first != null && ((Pair)var1).second != null) {
- Pair var2 = (Pair)var1;
- return this.add(var2.first, var2.second);
- } else {
- throw new NullPointerException();
- }
- }
-
- public synchronized Object add(Object var1, Object var2) {
- if (var1 != null && var2 != null) {
- Tree var3 = this.myTree;
- Pair var4 = new Pair(var1, var2);
- Tree.InsertResult var5 = var3.insertAux(var4, true);
- return var5.ok ? null : ((Pair)var5.node.object).second;
- } else {
- throw new NullPointerException();
- }
- }
-
- public synchronized Enumeration keys() {
- Tree var1 = this.myTree;
- return new OrderedMapIterator(var1, var1.myHeader.left, (OrderedMap)var1.myContainer, 2);
- }
-
- public synchronized Enumeration keys(Object var1) {
- return this.myTree.keys(var1).elements();
- }
-
- public synchronized Enumeration values(Object var1) {
- return this.myTree.values(var1).elements();
- }
-
- 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(true, var2, var3, this);
- int var4 = var1.readInt();
-
- while(var4-- > 0) {
- this.add(var1.readObject());
- }
-
- }
- }
-