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