home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / util / Hashtable$Enumerator.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  1.8 KB  |  106 lines

  1. package java.util;
  2.  
  3. class Hashtable$Enumerator implements Enumeration, Iterator {
  4.    Hashtable.Entry[] table;
  5.    int index;
  6.    Hashtable.Entry entry;
  7.    Hashtable.Entry lastReturned;
  8.    int type;
  9.    boolean iterator;
  10.    protected int expectedModCount;
  11.    // $FF: synthetic field
  12.    private final Hashtable this$0;
  13.  
  14.    Hashtable$Enumerator(Hashtable var1, int var2, boolean var3) {
  15.       this.this$0 = var1;
  16.       this.table = Hashtable.access$400(this.this$0);
  17.       this.index = this.table.length;
  18.       this.entry = null;
  19.       this.lastReturned = null;
  20.       this.expectedModCount = Hashtable.access$500(this.this$0);
  21.       this.type = var2;
  22.       this.iterator = var3;
  23.    }
  24.  
  25.    public boolean hasMoreElements() {
  26.       Hashtable.Entry var1 = this.entry;
  27.       int var2 = this.index;
  28.  
  29.       for(Hashtable.Entry[] var3 = this.table; var1 == null && var2 > 0; var1 = var3[var2]) {
  30.          --var2;
  31.       }
  32.  
  33.       this.entry = var1;
  34.       this.index = var2;
  35.       return var1 != null;
  36.    }
  37.  
  38.    public Object nextElement() {
  39.       Hashtable.Entry var1 = this.entry;
  40.       int var2 = this.index;
  41.  
  42.       for(Hashtable.Entry[] var3 = this.table; var1 == null && var2 > 0; var1 = var3[var2]) {
  43.          --var2;
  44.       }
  45.  
  46.       this.entry = var1;
  47.       this.index = var2;
  48.       if (var1 != null) {
  49.          Hashtable.Entry var4 = this.lastReturned = this.entry;
  50.          this.entry = var4.next;
  51.          return this.type == 0 ? var4.key : (this.type == 1 ? var4.value : var4);
  52.       } else {
  53.          throw new NoSuchElementException("Hashtable Enumerator");
  54.       }
  55.    }
  56.  
  57.    public boolean hasNext() {
  58.       return this.hasMoreElements();
  59.    }
  60.  
  61.    public Object next() {
  62.       if (Hashtable.access$500(this.this$0) != this.expectedModCount) {
  63.          throw new ConcurrentModificationException();
  64.       } else {
  65.          return this.nextElement();
  66.       }
  67.    }
  68.  
  69.    public void remove() {
  70.       if (!this.iterator) {
  71.          throw new UnsupportedOperationException();
  72.       } else if (this.lastReturned == null) {
  73.          throw new IllegalStateException("Hashtable Enumerator");
  74.       } else if (Hashtable.access$500(this.this$0) != this.expectedModCount) {
  75.          throw new ConcurrentModificationException();
  76.       } else {
  77.          Hashtable var1 = this.this$0;
  78.          synchronized(var1) {
  79.             Hashtable.Entry[] var2 = Hashtable.access$400(this.this$0);
  80.             int var3 = (this.lastReturned.hash & Integer.MAX_VALUE) % var2.length;
  81.             Hashtable.Entry var4 = var2[var3];
  82.  
  83.             for(Hashtable.Entry var5 = null; var4 != null; var4 = var4.next) {
  84.                if (var4 == this.lastReturned) {
  85.                   Hashtable.access$508(this.this$0);
  86.                   ++this.expectedModCount;
  87.                   if (var5 == null) {
  88.                      var2[var3] = var4.next;
  89.                   } else {
  90.                      var5.next = var4.next;
  91.                   }
  92.  
  93.                   Hashtable.access$210(this.this$0);
  94.                   this.lastReturned = null;
  95.                   return;
  96.                }
  97.  
  98.                var5 = var4;
  99.             }
  100.  
  101.             throw new ConcurrentModificationException();
  102.          }
  103.       }
  104.    }
  105. }
  106.