annotate dwt/dwthelper/WeakHashMap.d @ 198:be4ce760802a

Add: missing files
author Frank Benoit <benoit@tionex.de>
date Thu, 10 Apr 2008 11:20:26 +0200
parents
children 4ec36c3a04a3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
198
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 module dwt.dwthelper.WeakHashMap;
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 /+
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 Is not yet 'weak'
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 +/
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 class WeakHashMap {
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 static class Ref {
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 size_t ptr;
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 this(Object k){
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 ptr = cast(size_t)cast(void*)k;
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 }
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14 }
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 Object[ Ref ] data;
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 public void add (Object key, Object element){
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 auto k = new Ref(key);
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 data[ k ] = element;
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 }
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 public void removeKey (Object key){
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 scope k = new Ref(key);
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 data.remove( k );
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 }
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 public Object get(Object key){
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 scope k = new Ref(key);
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 if( auto p = k in data ){
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 return *p;
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 }
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 return null;
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 }
be4ce760802a Add: missing files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 }