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