home *** CD-ROM | disk | FTP | other *** search
- package java.util;
-
- class Hashtable$Enumerator implements Enumeration, Iterator {
- Hashtable.Entry[] table;
- int index;
- Hashtable.Entry entry;
- Hashtable.Entry lastReturned;
- int type;
- boolean iterator;
- protected int expectedModCount;
- // $FF: synthetic field
- private final Hashtable this$0;
-
- Hashtable$Enumerator(Hashtable var1, int var2, boolean var3) {
- this.this$0 = var1;
- this.table = Hashtable.access$400(this.this$0);
- this.index = this.table.length;
- this.entry = null;
- this.lastReturned = null;
- this.expectedModCount = Hashtable.access$500(this.this$0);
- this.type = var2;
- this.iterator = var3;
- }
-
- public boolean hasMoreElements() {
- Hashtable.Entry var1 = this.entry;
- int var2 = this.index;
-
- for(Hashtable.Entry[] var3 = this.table; var1 == null && var2 > 0; var1 = var3[var2]) {
- --var2;
- }
-
- this.entry = var1;
- this.index = var2;
- return var1 != null;
- }
-
- public Object nextElement() {
- Hashtable.Entry var1 = this.entry;
- int var2 = this.index;
-
- for(Hashtable.Entry[] var3 = this.table; var1 == null && var2 > 0; var1 = var3[var2]) {
- --var2;
- }
-
- this.entry = var1;
- this.index = var2;
- if (var1 != null) {
- Hashtable.Entry var4 = this.lastReturned = this.entry;
- this.entry = var4.next;
- return this.type == 0 ? var4.key : (this.type == 1 ? var4.value : var4);
- } else {
- throw new NoSuchElementException("Hashtable Enumerator");
- }
- }
-
- public boolean hasNext() {
- return this.hasMoreElements();
- }
-
- public Object next() {
- if (Hashtable.access$500(this.this$0) != this.expectedModCount) {
- throw new ConcurrentModificationException();
- } else {
- return this.nextElement();
- }
- }
-
- public void remove() {
- if (!this.iterator) {
- throw new UnsupportedOperationException();
- } else if (this.lastReturned == null) {
- throw new IllegalStateException("Hashtable Enumerator");
- } else if (Hashtable.access$500(this.this$0) != this.expectedModCount) {
- throw new ConcurrentModificationException();
- } else {
- Hashtable var1 = this.this$0;
- synchronized(var1) {
- Hashtable.Entry[] var2 = Hashtable.access$400(this.this$0);
- int var3 = (this.lastReturned.hash & Integer.MAX_VALUE) % var2.length;
- Hashtable.Entry var4 = var2[var3];
-
- for(Hashtable.Entry var5 = null; var4 != null; var4 = var4.next) {
- if (var4 == this.lastReturned) {
- Hashtable.access$508(this.this$0);
- ++this.expectedModCount;
- if (var5 == null) {
- var2[var3] = var4.next;
- } else {
- var5.next = var4.next;
- }
-
- Hashtable.access$210(this.this$0);
- this.lastReturned = null;
- return;
- }
-
- var5 = var4;
- }
-
- throw new ConcurrentModificationException();
- }
- }
- }
- }
-