1 module java.util.HashSet; 2 3 import java.lang.all; 4 import java.util.Set; 5 import java.util.Collection; 6 import java.util.Iterator; 7 8 version(Tango){ 9 static import tango.util.container.HashSet; 10 } else { // Phobos 11 } 12 13 class HashSet : Set { 14 version(Tango){ 15 alias tango.util.container.HashSet.HashSet!(Object) SetType; 16 private SetType set; 17 } else { // Phobos 18 } 19 20 public this(){ 21 version(Tango){ 22 set = new SetType(); 23 } else { // Phobos 24 implMissingInPhobos(); 25 } 26 } 27 public this(Collection c){ 28 version(Tango){ 29 set = new SetType(); 30 addAll(c); 31 } else { // Phobos 32 implMissingInPhobos(); 33 } 34 } 35 public this(int initialCapacity){ 36 version(Tango){ 37 set = new SetType(); 38 } else { // Phobos 39 implMissingInPhobos(); 40 } 41 } 42 public this(int initialCapacity, float loadFactor){ 43 version(Tango){ 44 set = new SetType(loadFactor); 45 } else { // Phobos 46 implMissingInPhobos(); 47 } 48 } 49 public bool add(Object o){ 50 version(Tango){ 51 return set.add(o); 52 } else { // Phobos 53 implMissingInPhobos(); 54 return false; 55 } 56 } 57 public bool add(String o){ 58 return add(stringcast(o)); 59 } 60 public bool addAll(Collection c){ 61 bool res = false; 62 foreach( o; c ){ 63 res |= add(o); 64 } 65 return res; 66 } 67 public void clear(){ 68 version(Tango){ 69 set.clear(); 70 } else { // Phobos 71 implMissingInPhobos(); 72 } 73 } 74 public bool contains(Object o){ 75 version(Tango){ 76 return set.contains(o); 77 } else { // Phobos 78 implMissingInPhobos(); 79 return false; 80 } 81 } 82 public bool contains(String o){ 83 return contains(stringcast(o)); 84 } 85 public bool containsAll(Collection c){ 86 implMissing( __FILE__, __LINE__ ); 87 return false; 88 } 89 public override equals_t opEquals(Object o){ 90 implMissing( __FILE__, __LINE__ ); 91 return 0; 92 } 93 public override hash_t toHash(){ 94 implMissingSafe( __FILE__, __LINE__ ); 95 return 0; 96 } 97 public bool isEmpty(){ 98 version(Tango){ 99 return set.isEmpty(); 100 } else { // Phobos 101 implMissingInPhobos(); 102 return false; 103 } 104 } 105 version(Tango){ 106 class LocalIterator : Iterator { 107 SetType.Iterator iter; 108 Object nextElem; 109 this( SetType.Iterator iter){ 110 this.iter = iter; 111 } 112 public bool hasNext(){ 113 return iter.next(nextElem); 114 } 115 public Object next(){ 116 return nextElem; 117 } 118 public void remove(){ 119 iter.remove(); 120 } 121 } 122 } else { // Phobos 123 } 124 public Iterator iterator(){ 125 version(Tango){ 126 return new LocalIterator(set.iterator()); 127 } else { // Phobos 128 implMissingInPhobos(); 129 return null; 130 } 131 } 132 public bool remove(Object o){ 133 version(Tango){ 134 return set.remove(o); 135 } else { // Phobos 136 implMissingInPhobos(); 137 return false; 138 } 139 } 140 public bool remove(String key){ 141 return remove(stringcast(key)); 142 } 143 public bool removeAll(Collection c){ 144 implMissing( __FILE__, __LINE__ ); 145 return false; 146 } 147 public bool retainAll(Collection c){ 148 implMissing( __FILE__, __LINE__ ); 149 return false; 150 } 151 public int size(){ 152 version(Tango){ 153 return set.size(); 154 } else { // Phobos 155 implMissingInPhobos(); 156 return 0; 157 } 158 } 159 public Object[] toArray(){ 160 version(Tango){ 161 Object[] res; 162 res.length = size(); 163 int idx = 0; 164 foreach( o; set ){ 165 res[idx] = o; 166 idx++; 167 } 168 return res; 169 } else { // Phobos 170 implMissingInPhobos(); 171 return null; 172 } 173 } 174 public Object[] toArray(Object[] a){ 175 implMissing( __FILE__, __LINE__ ); 176 return null; 177 } 178 public override String toString(){ 179 implMissing( __FILE__, __LINE__ ); 180 return null; 181 } 182 183 // only for D 184 public int opApply (int delegate(ref Object value) dg){ 185 version(Tango){ 186 return set.opApply(dg); 187 } else { // Phobos 188 implMissingInPhobos(); 189 return 0; 190 } 191 } 192 193 } 194