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