1 30 package org.objectweb.asm.tree.analysis; 31 32 import java.util.AbstractSet ; 33 import java.util.HashSet ; 34 import java.util.Iterator ; 35 import java.util.Set ; 36 37 42 class SmallSet extends AbstractSet implements Iterator { 43 44 46 Object e1, e2; 47 48 final static SmallSet EMPTY_SET = new SmallSet(null, null); 49 50 SmallSet(Object e1, Object e2) { 51 this.e1 = e1; 52 this.e2 = e2; 53 } 54 55 59 public Iterator iterator() { 60 return new SmallSet(e1, e2); 61 } 62 63 public int size() { 64 return e1 == null ? 0 : (e2 == null ? 1 : 2); 65 } 66 67 71 public boolean hasNext() { 72 return e1 != null; 73 } 74 75 public Object next() { 76 Object e = e1; 77 e1 = e2; 78 e2 = null; 79 return e; 80 } 81 82 public void remove() { 83 } 84 85 89 Set union(SmallSet s) { 90 if ((s.e1 == e1 && s.e2 == e2) || (s.e1 == e2 && s.e2 == e1)) { 91 return this; } 93 if (s.e1 == null) { 94 return this; } 96 if (e1 == null) { 97 return s; } 99 if (s.e2 == null) { if (e2 == null) { 101 return new SmallSet(e1, s.e1); } else if (s.e1 == e1 || s.e1 == e2) { return this; 104 } 105 } 106 if (e2 == null) { if (e1 == s.e1 || e1 == s.e2) { return s; 112 } 113 } 114 HashSet r = new HashSet (4); 116 r.add(e1); 117 if (e2 != null) { 118 r.add(e2); 119 } 120 r.add(s.e1); 121 if (s.e2 != null) { 122 r.add(s.e2); 123 } 124 return r; 125 } 126 } 127 | Popular Tags |