198
|
1 module dwt.dwthelper.WeakHashMap;
|
|
2
|
|
3
|
|
4 /+
|
|
5 Is not yet 'weak'
|
|
6 +/
|
|
7 class WeakHashMap {
|
|
8
|
|
9 static class Ref {
|
|
10 size_t ptr;
|
|
11 this(Object k){
|
|
12 ptr = cast(size_t)cast(void*)k;
|
|
13 }
|
|
14 }
|
|
15
|
|
16 Object[ Ref ] data;
|
|
17
|
|
18 public void add (Object key, Object element){
|
|
19 auto k = new Ref(key);
|
|
20 data[ k ] = element;
|
|
21 }
|
|
22 public void removeKey (Object key){
|
|
23 scope k = new Ref(key);
|
|
24 data.remove( k );
|
|
25 }
|
|
26 public Object get(Object key){
|
|
27 scope k = new Ref(key);
|
|
28 if( auto p = k in data ){
|
|
29 return *p;
|
|
30 }
|
|
31 return null;
|
|
32 }
|
|
33 }
|