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