view dwt/dwthelper/WeakHashMap.d @ 156:969e7de37c3d default tip

Fixes to get dwt to work with dmd and ldc
author Jacob Carlborg <doob@me.com>
date Wed, 08 Jul 2009 21:56:44 +0200
parents 380af2bdd8e5
children
line wrap: on
line source

module dwt.dwthelper.WeakHashMap;


/+
    Is not yet 'weak'
+/
class WeakHashMap {

    static class Ref {
        size_t ptr;
        this(Object k){
            ptr = cast(size_t)cast(void*)k;
        }
    }

    Object[ Ref ] data;

    public void add (Object key, Object element){
        auto k = new Ref(key);
        data[ k ] = element;
    }
    public void removeKey (Object key){
        scope k = new Ref(key);
        data.remove( k );
    }
    public Object get(Object key){
        scope k = new Ref(key);
        if( auto p = k in data ){
            return *p;
        }
        return null;
    }
}