Mercurial > projects > dwt2
comparison java/src/java/util/IdentityHashMap.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.HashMap; | 6 import java.util.HashMap; |
7 import java.util.ArrayList; | 7 import java.util.ArrayList; |
8 import java.util.Collection; | 8 import java.util.Collection; |
9 import java.util.Set; | 9 import java.util.Set; |
10 | 10 |
11 version(Tango){ | |
12 static import tango.util.container.HashMap; | |
13 } else { // Phobos | |
14 } | |
15 | |
11 class IdentityHashMap : Map { | 16 class IdentityHashMap : Map { |
12 alias tango.util.container.HashMap.HashMap!(Object,Object) MapType; | 17 version(Tango){ |
13 private MapType map; | 18 alias tango.util.container.HashMap.HashMap!(Object,Object) MapType; |
19 private MapType map; | |
20 } else { // Phobos | |
21 } | |
14 | 22 |
15 public this(){ | 23 public this(){ |
16 implMissing(__FILE__, __LINE__ ); | 24 implMissing(__FILE__, __LINE__ ); |
17 map = new MapType(); | 25 version(Tango){ |
26 map = new MapType(); | |
27 } else { // Phobos | |
28 implMissing( __FILE__, __LINE__ ); | |
29 } | |
18 } | 30 } |
19 public this(int initialCapacity){ | 31 public this(int initialCapacity){ |
20 implMissing(__FILE__, __LINE__ ); | 32 implMissing(__FILE__, __LINE__ ); |
21 this(); | 33 this(); |
22 } | 34 } |
23 public this(int initialCapacity, float loadFactor){ | 35 public this(int initialCapacity, float loadFactor){ |
24 implMissing(__FILE__, __LINE__ ); | 36 implMissing(__FILE__, __LINE__ ); |
25 map = new MapType(loadFactor); | 37 version(Tango){ |
38 map = new MapType(loadFactor); | |
39 } else { // Phobos | |
40 implMissing( __FILE__, __LINE__ ); | |
41 } | |
26 } | 42 } |
27 public this(Map m){ | 43 public this(Map m){ |
28 implMissing(__FILE__, __LINE__ ); | 44 implMissing(__FILE__, __LINE__ ); |
29 this(); | 45 this(); |
30 putAll(m); | 46 putAll(m); |
31 } | 47 } |
32 public void clear(){ | 48 public void clear(){ |
33 map.clear(); | 49 version(Tango){ |
50 map.clear(); | |
51 } else { // Phobos | |
52 implMissing( __FILE__, __LINE__ ); | |
53 } | |
34 } | 54 } |
35 public bool containsKey(Object key){ | 55 public bool containsKey(Object key){ |
36 Object v; | 56 version(Tango){ |
37 return map.get(key, v ); | 57 Object v; |
58 return map.get(key, v ); | |
59 } else { // Phobos | |
60 implMissing( __FILE__, __LINE__ ); | |
61 return false; | |
62 } | |
38 } | 63 } |
39 public bool containsKey(String key){ | 64 public bool containsKey(String key){ |
40 return containsKey(stringcast(key)); | 65 return containsKey(stringcast(key)); |
41 } | 66 } |
42 public bool containsValue(Object value){ | 67 public bool containsValue(Object value){ |
43 return map.contains(value); | 68 version(Tango){ |
69 return map.contains(value); | |
70 } else { // Phobos | |
71 implMissing( __FILE__, __LINE__ ); | |
72 return false; | |
73 } | |
44 } | 74 } |
45 public Set entrySet(){ | 75 public Set entrySet(){ |
46 HashSet res = new HashSet(); | 76 version(Tango){ |
47 foreach( k, v; map ){ | 77 HashSet res = new HashSet(); |
48 res.add( new MapEntry(this,k)); | |
49 } | |
50 return res; | |
51 } | |
52 public override int opEquals(Object o){ | |
53 if( auto other = cast(HashMap) o ){ | |
54 if( other.size() !is size() ){ | |
55 return false; | |
56 } | |
57 foreach( k, v; map ){ | 78 foreach( k, v; map ){ |
58 Object vo = other.get(k); | 79 res.add( new MapEntry(this,k)); |
59 if( v != vo ){ | 80 } |
81 return res; | |
82 } else { // Phobos | |
83 implMissing( __FILE__, __LINE__ ); | |
84 return null; | |
85 } | |
86 } | |
87 public override equals_t opEquals(Object o){ | |
88 version(Tango){ | |
89 if( auto other = cast(HashMap) o ){ | |
90 if( other.size() !is size() ){ | |
60 return false; | 91 return false; |
61 } | 92 } |
62 } | 93 foreach( k, v; map ){ |
63 return true; | 94 Object vo = other.get(k); |
64 } | 95 if( v != vo ){ |
65 return false; | 96 return false; |
97 } | |
98 } | |
99 return true; | |
100 } | |
101 return false; | |
102 } else { // Phobos | |
103 implMissing( __FILE__, __LINE__ ); | |
104 return false; | |
105 } | |
66 } | 106 } |
67 public Object get(Object key){ | 107 public Object get(Object key){ |
68 if( auto v = key in map ){ | 108 version(Tango){ |
69 return *v; | 109 if( auto v = key in map ){ |
70 } | 110 return *v; |
71 return null; | 111 } |
112 return null; | |
113 } else { // Phobos | |
114 implMissing( __FILE__, __LINE__ ); | |
115 return null; | |
116 } | |
72 } | 117 } |
73 public Object get(String key){ | 118 public Object get(String key){ |
74 return get(stringcast(key)); | 119 return get(stringcast(key)); |
75 } | 120 } |
76 public override hash_t toHash(){ | 121 public override hash_t toHash(){ |
77 return super.toHash(); | 122 return super.toHash(); |
78 } | 123 } |
79 public bool isEmpty(){ | 124 public bool isEmpty(){ |
80 return map.isEmpty(); | 125 version(Tango){ |
126 return map.isEmpty(); | |
127 } else { // Phobos | |
128 implMissing( __FILE__, __LINE__ ); | |
129 return false; | |
130 } | |
81 } | 131 } |
82 public Set keySet(){ | 132 public Set keySet(){ |
83 HashSet res = new HashSet(); | 133 version(Tango){ |
84 foreach( k, v; map ){ | 134 HashSet res = new HashSet(); |
85 res.add(k); | 135 foreach( k, v; map ){ |
86 } | 136 res.add(k); |
87 return res; | 137 } |
138 return res; | |
139 } else { // Phobos | |
140 implMissing( __FILE__, __LINE__ ); | |
141 return null; | |
142 } | |
88 } | 143 } |
89 public Object put(Object key, Object value){ | 144 public Object put(Object key, Object value){ |
90 Object res = null; | 145 version(Tango){ |
91 if( auto vold = key in map ){ | 146 Object res = null; |
92 res = *vold; | 147 if( auto vold = key in map ){ |
93 } | 148 res = *vold; |
94 map[ key ] = value; | 149 } |
95 return res; | 150 map[ key ] = value; |
151 return res; | |
152 } else { // Phobos | |
153 implMissing( __FILE__, __LINE__ ); | |
154 return null; | |
155 } | |
96 } | 156 } |
97 public Object put(String key, Object value){ | 157 public Object put(String key, Object value){ |
98 return put( stringcast(key), value ); | 158 return put( stringcast(key), value ); |
99 } | 159 } |
100 public Object put(Object key, String value){ | 160 public Object put(Object key, String value){ |
102 } | 162 } |
103 public Object put(String key, String value){ | 163 public Object put(String key, String value){ |
104 return put( stringcast(key), stringcast(value) ); | 164 return put( stringcast(key), stringcast(value) ); |
105 } | 165 } |
106 public void putAll(Map t){ | 166 public void putAll(Map t){ |
107 foreach( k, v; t ){ | 167 version(Tango){ |
108 map[k] = v; | 168 foreach( k, v; t ){ |
169 map[k] = v; | |
170 } | |
171 } else { // Phobos | |
172 implMissing( __FILE__, __LINE__ ); | |
109 } | 173 } |
110 } | 174 } |
111 public Object remove(Object key){ | 175 public Object remove(Object key){ |
112 if( auto v = key in map ){ | 176 version(Tango){ |
113 Object res = *v; | 177 if( auto v = key in map ){ |
178 Object res = *v; | |
179 map.remove(key); | |
180 return res; | |
181 } | |
114 map.remove(key); | 182 map.remove(key); |
115 return res; | 183 return null; |
116 } | 184 } else { // Phobos |
117 map.remove(key); | 185 implMissing( __FILE__, __LINE__ ); |
118 return null; | 186 return null; |
187 } | |
119 } | 188 } |
120 public Object remove(String key){ | 189 public Object remove(String key){ |
121 return remove(stringcast(key)); | 190 return remove(stringcast(key)); |
122 } | 191 } |
123 public int size(){ | 192 public int size(){ |
124 return map.size(); | 193 version(Tango){ |
194 return map.size(); | |
195 } else { // Phobos | |
196 implMissing( __FILE__, __LINE__ ); | |
197 return 0; | |
198 } | |
125 } | 199 } |
126 public Collection values(){ | 200 public Collection values(){ |
127 ArrayList res = new ArrayList( size() ); | 201 version(Tango){ |
128 foreach( k, v; map ){ | 202 ArrayList res = new ArrayList( size() ); |
129 res.add( v ); | 203 foreach( k, v; map ){ |
130 } | 204 res.add( v ); |
131 return res; | 205 } |
206 return res; | |
207 } else { // Phobos | |
208 implMissing( __FILE__, __LINE__ ); | |
209 return null; | |
210 } | |
132 } | 211 } |
133 | 212 |
134 public int opApply (int delegate(ref Object value) dg){ | 213 public int opApply (int delegate(ref Object value) dg){ |
135 return map.opApply( dg ); | 214 version(Tango){ |
215 return map.opApply( dg ); | |
216 } else { // Phobos | |
217 implMissing( __FILE__, __LINE__ ); | |
218 return 0; | |
219 } | |
136 } | 220 } |
137 public int opApply (int delegate(ref Object key, ref Object value) dg){ | 221 public int opApply (int delegate(ref Object key, ref Object value) dg){ |
138 return map.opApply( dg ); | 222 version(Tango){ |
223 return map.opApply( dg ); | |
224 } else { // Phobos | |
225 implMissing( __FILE__, __LINE__ ); | |
226 return 0; | |
227 } | |
139 } | 228 } |
140 } | 229 } |
141 | 230 |