Mercurial > projects > dwt2
comparison base/src/java/util/TreeMap.d @ 27:1bf55a6eb092
Renamed java tree to base
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 21 Mar 2009 11:33:57 +0100 |
parents | java/src/java/util/TreeMap.d@9b96950f2c3c |
children | bbe49769ec18 |
comparison
equal
deleted
inserted
replaced
26:f589fc20a5f9 | 27:1bf55a6eb092 |
---|---|
1 module java.util.TreeMap; | |
2 | |
3 import java.lang.all; | |
4 import java.util.Map; | |
5 import java.util.Set; | |
6 import java.util.Collection; | |
7 import java.util.SortedMap; | |
8 import java.util.TreeSet; | |
9 import java.util.ArrayList; | |
10 | |
11 version(Tango){ | |
12 static import tango.util.container.SortedMap; | |
13 } else { // Phobos | |
14 } | |
15 | |
16 | |
17 class TreeMap : Map, SortedMap { | |
18 version(Tango){ | |
19 alias tango.util.container.SortedMap.SortedMap!(Object,Object) MapType; | |
20 private MapType map; | |
21 } else { // Phobos | |
22 } | |
23 | |
24 | |
25 public this(){ | |
26 version(Tango){ | |
27 map = new MapType(); | |
28 } else { // Phobos | |
29 implMissing( __FILE__, __LINE__ ); | |
30 } | |
31 } | |
32 public this(Comparator c){ | |
33 implMissing( __FILE__, __LINE__ ); | |
34 } | |
35 public this(Map m){ | |
36 implMissing( __FILE__, __LINE__ ); | |
37 } | |
38 public this(SortedMap m){ | |
39 implMissing( __FILE__, __LINE__ ); | |
40 } | |
41 public void clear(){ | |
42 version(Tango){ | |
43 map.clear(); | |
44 } else { // Phobos | |
45 implMissing( __FILE__, __LINE__ ); | |
46 } | |
47 } | |
48 Comparator comparator(){ | |
49 implMissing( __FILE__, __LINE__ ); | |
50 return null; | |
51 } | |
52 public bool containsKey(Object key){ | |
53 version(Tango){ | |
54 Object v; | |
55 return map.get(key, v ); | |
56 } else { // Phobos | |
57 implMissing( __FILE__, __LINE__ ); | |
58 return false; | |
59 } | |
60 } | |
61 public bool containsKey(String key){ | |
62 return containsKey(stringcast(key)); | |
63 } | |
64 public bool containsValue(Object value){ | |
65 version(Tango){ | |
66 return map.contains(value); | |
67 } else { // Phobos | |
68 implMissing( __FILE__, __LINE__ ); | |
69 return false; | |
70 } | |
71 } | |
72 public Set entrySet(){ | |
73 version(Tango){ | |
74 TreeSet res = new TreeSet(); | |
75 foreach( k, v; map ){ | |
76 res.add( new MapEntry(this,k) ); | |
77 } | |
78 return res; | |
79 } else { // Phobos | |
80 implMissing( __FILE__, __LINE__ ); | |
81 return null; | |
82 } | |
83 } | |
84 public override equals_t opEquals(Object o){ | |
85 version(Tango){ | |
86 if( auto other = cast(TreeMap) o ){ | |
87 if( other.size() !is size() ){ | |
88 return false; | |
89 } | |
90 foreach( k, v; map ){ | |
91 Object vo = other.get(k); | |
92 if( v != vo ){ | |
93 return false; | |
94 } | |
95 } | |
96 return true; | |
97 } | |
98 return false; | |
99 } else { // Phobos | |
100 implMissing( __FILE__, __LINE__ ); | |
101 return false; | |
102 } | |
103 } | |
104 Object firstKey(){ | |
105 version(Tango){ | |
106 foreach( k; map ){ | |
107 return k; | |
108 } | |
109 throw new tango.core.Exception.NoSuchElementException( "TreeMap.firstKey" ); | |
110 } else { // Phobos | |
111 implMissing( __FILE__, __LINE__ ); | |
112 return null; | |
113 } | |
114 } | |
115 public Object get(Object key){ | |
116 implMissing( __FILE__, __LINE__ ); | |
117 return null; | |
118 } | |
119 public Object get(String key){ | |
120 return get(stringcast(key)); | |
121 } | |
122 public override hash_t toHash(){ | |
123 // http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractMap.html#hashCode() | |
124 hash_t res = 0; | |
125 foreach( e; entrySet() ){ | |
126 res += e.toHash(); | |
127 } | |
128 return res; | |
129 } | |
130 SortedMap headMap(Object toKey){ | |
131 implMissing( __FILE__, __LINE__ ); | |
132 return null; | |
133 } | |
134 public bool isEmpty(){ | |
135 version(Tango){ | |
136 return map.isEmpty(); | |
137 } else { // Phobos | |
138 implMissing( __FILE__, __LINE__ ); | |
139 return false; | |
140 } | |
141 } | |
142 public Set keySet(){ | |
143 version(Tango){ | |
144 TreeSet res = new TreeSet(); | |
145 foreach( k; map ){ | |
146 res.add( k ); | |
147 } | |
148 return res; | |
149 } else { // Phobos | |
150 implMissing( __FILE__, __LINE__ ); | |
151 return null; | |
152 } | |
153 } | |
154 Object lastKey(){ | |
155 version(Tango){ | |
156 Object res; | |
157 foreach( k; map ){ | |
158 res = k; | |
159 } | |
160 if( map.size() ) return res; | |
161 throw new tango.core.Exception.NoSuchElementException( "TreeMap.lastKey" ); | |
162 } else { // Phobos | |
163 implMissing( __FILE__, __LINE__ ); | |
164 return null; | |
165 } | |
166 } | |
167 public Object put(Object key, Object value){ | |
168 version(Tango){ | |
169 if( map.contains(key) ){ // TODO if tango has opIn_r, then use the "in" operator | |
170 Object res = map[key]; | |
171 map[key] = value; | |
172 return res; | |
173 } | |
174 map[key] = value; | |
175 return null; | |
176 } else { // Phobos | |
177 implMissing( __FILE__, __LINE__ ); | |
178 return null; | |
179 } | |
180 } | |
181 public Object put(String key, Object value){ | |
182 return put(stringcast(key), value); | |
183 } | |
184 public Object put(Object key, String value){ | |
185 return put(key, stringcast(value)); | |
186 } | |
187 public Object put(String key, String value){ | |
188 return put(stringcast(key), stringcast(value)); | |
189 } | |
190 public void putAll(Map t){ | |
191 foreach( k, v; t ){ | |
192 put( k, v ); | |
193 } | |
194 } | |
195 public Object remove(Object key){ | |
196 version(Tango){ | |
197 Object res; | |
198 map.take(key,res); | |
199 return res; | |
200 } else { // Phobos | |
201 implMissing( __FILE__, __LINE__ ); | |
202 return null; | |
203 } | |
204 } | |
205 public Object remove(String key){ | |
206 return remove(stringcast(key)); | |
207 } | |
208 public int size(){ | |
209 version(Tango){ | |
210 return map.size(); | |
211 } else { // Phobos | |
212 implMissing( __FILE__, __LINE__ ); | |
213 return 0; | |
214 } | |
215 } | |
216 SortedMap subMap(Object fromKey, Object toKey){ | |
217 implMissing( __FILE__, __LINE__ ); | |
218 return null; | |
219 } | |
220 SortedMap tailMap(Object fromKey){ | |
221 implMissing( __FILE__, __LINE__ ); | |
222 return null; | |
223 } | |
224 public Collection values(){ | |
225 version(Tango){ | |
226 ArrayList res = new ArrayList( size() ); | |
227 foreach( k, v; map ){ | |
228 res.add( v ); | |
229 } | |
230 return res; | |
231 } else { // Phobos | |
232 implMissing( __FILE__, __LINE__ ); | |
233 return null; | |
234 } | |
235 } | |
236 | |
237 public int opApply (int delegate(ref Object value) dg){ | |
238 version(Tango){ | |
239 return map.opApply( dg ); | |
240 } else { // Phobos | |
241 implMissing( __FILE__, __LINE__ ); | |
242 return 0; | |
243 } | |
244 } | |
245 public int opApply (int delegate(ref Object key, ref Object value) dg){ | |
246 version(Tango){ | |
247 return map.opApply( dg ); | |
248 } else { // Phobos | |
249 implMissing( __FILE__, __LINE__ ); | |
250 return 0; | |
251 } | |
252 } | |
253 } | |
254 |